Основываясь на значении, введенном в текстовом редакторе, я выполняю выборку для таблицы sqlite, и мне нужно будет отобразить результаты этого запроса в виде
TextView EditText Button
Когда кнопка нажатаМне нужно получить доступ к текстовому значению EditText прямо слева от него.
TableLayout tl = (TableLayout)FindViewById(Resource.Id.tl);
var connection = inst.conn();
connection.Open();
var c = connection.CreateCommand();
c.CommandText = "Select * From OnOrder Where ItemNumber = '" + contents + "'";
SqliteDataReader dr = c.ExecuteReader();
if (dr.HasRows)
{
TextView tv;
EditText et;
Button bt;
TableRow tr;
var tlp = new TableRow.LayoutParams(2);
var tlp2 = new TableRow.LayoutParams(3);
while (dr.Read())
{
tr = new TableRow(this);
partdesc.Text = dr[2].ToString();
tv = new TextView(this);
tv.Text = dr[0].ToString() + " " + dr[3].ToString() + " ";
tr.AddView(tv);
et = new EditText(this);
et.Hint = "Quantity";
et.LayoutParameters = tlp;
tr.AddView(et);
bt = new Button(this);
bt.LayoutParameters = tlp2;
bt.Text = "Receive";
bt.Click += delegate
{
//Don't know what to do here to make it so that when this button is clicked it acts on the values of the edittext just created to its left
};
tr.AddView(bt);
tl.AddView(tr);
}
}
dr.Close();
connection.Close();
}
Редактировать: код, который работает
TableLayout tl = (TableLayout)FindViewById(Resource.Id.tl);
var connection = inst.conn();
connection.Open();
var c = connection.CreateCommand();
c.CommandText = "Select * From OnOrder Where ItemNumber = '" + contents + "'";
SqliteDataReader dr = c.ExecuteReader();
if (dr.HasRows)
{
TextView tv;
EditText et;
Button bt;
TableRow tr;
var tlp = new TableRow.LayoutParams(2);
var tlp2 = new TableRow.LayoutParams(3);
var cnt = 0;
while (dr.Read())
{
tr = new TableRow(this);
var record = cnt.ToString();
partdesc.Text = dr[2].ToString();
tv = new TextView(this);
tv.Text = dr[0].ToString() + " " + dr[3].ToString() + " ";
tr.AddView(tv);
et = new EditText(this);
et.Hint = "Quantity";
et.InputType = (int)Android.Text.InputTypes.ClassNumber;
et.LayoutParameters = tlp;
tr.AddView(et);
bt = new Button(this);
bt.LayoutParameters = tlp2;
bt.Text = "Receive";
bt.Click += delegate
{
getValue(Convert.ToInt32(record));
};
tr.AddView(bt);
tl.AddView(tr);
cnt++;
}
}
dr.Close();
connection.Close();
}
}
}
public void getValue(int index)
{
TableLayout tl = (TableLayout)FindViewById(Resource.Id.tl);
TableRow tr = (TableRow)tl.GetChildAt(index);
EditText et = (EditText)tr.GetChildAt(1);
var inst = new Inventory.invChange();
Dialog d = inst.showBuilder(this, "Test", et.Text);
d.Show();
}