checkbox i datagrid -udlæsning af db virker ikke visuelt i checkB
Jeg har lavet et datagrid hvor jeg har lavet den ene colum om til en checkbox med "Convert this column into a Template Colum" i IDE'en - jeg har fået lavet koden til at opdatere checkbox'en i databasen, og den virker fint.Mit problem nu er at at checkboxen ikke viser hvad der reelt er i databasen i andet end det første felt.resten af column er bare et kopi visuelt af det første felt, uanset hvad databasen siger.
jeg kan stadig ændre alle felter med denne checkbox, selvom den "viser" som om det er første felt jeg editere.
Her er koden som jeg har fået lavet til at opdatere felterne.
tb er til editering af mine textbox felter i datagridet, cb er min checkbox.
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int celle = 0;
try
{
int alarmtempmin, alarmtempmax;
string sensorname;
bool state;
// Gets the value of the key field of the row being updated
string key = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
// Gets get the value of the controls (textboxes) that the user
// updated. The DataGrid columns are exposed as the Cells collection.
// Each cell has a collection of controls. In this case, there is only one
// control in each cell -- a TextBox control. To get its value,
// you copy the TextBox to a local instance (which requires casting)
// and extract its Text property.
//
// The first column -- Cells(0) -- contains the Update and Cancel buttons.
TextBox tb;
CheckBox cb;
// Gets the value the TextBox control in the third column
tb = (TextBox)(e.Item.Cells[2].Controls[0]);
alarmtempmin = Convert.ToInt16(tb.Text);
tb.BackColor = Color.White;
celle++;
// Gets the value the TextBox control in the fourth column
tb = (TextBox)(e.Item.Cells[3].Controls[0]);
alarmtempmax = Convert.ToInt16(tb.Text);
tb.BackColor = Color.White;
celle++;
// Gets the value the TextBox control in the fifth column
tb = (TextBox)(e.Item.Cells[4].Controls[0]);
sensorname = tb.Text;
tb.BackColor = Color.White;
// Gets the value the CheckBox control in the sixth colum
cb = (CheckBox)(e.Item.Cells[5].Controls[1]);
if (cb.Checked)
state = true;
else
state = false;
// Finds the row in the dataset table that matches the
// one the user updated in the grid. This example uses a
// special Find method defined for the typed dataset, which
// returns a reference to the row.
myDataSet.tempsensorRow r;
r = myDataSet1.tempsensor.FindByautoID(int.Parse(key));
// Updates the dataset table.
r.alarmtempmin = alarmtempmin;
r.alarmtempmax = alarmtempmax;
r.sensorname = sensorname;
r.state = state;
// Calls a SQL statement to update the database from the dataset
jr.Component1 myComponent = new Component1();
myComponent.sqlDataAdapter1.Update(myDataSet1);
// Takes the DataGrid row out of editing mode
DataGrid1.EditItemIndex = -1;
// Refreshes the grid
DataGrid1.DataBind();
celle = 0;
}
catch (FormatException e2)
{
TextBox tb;
tb = (TextBox)(e.Item.Cells[celle+2].Controls[0]);
tb.BackColor=Color.Red;
}