问一个关于DataGrid中CheckBox的问题(WINFORM)
朝夕闻道 2004-08-09 12:02:53 代码片断:dsMem是一个从数据库取出的数据DataSet,refWeb.execSql(strSql)为通过WebService执行Sql语句
private void memberValidate_Load(object sender, System.EventArgs e)
{
dsMem = refWeb.getData("SELECT m_id,m_account,m_email,m_checked FROM db_member WHERE m_checked = 0 and m_delflag = 0");
dsMem.Tables[0].Columns.Add(new DataColumn("sel",typeof(bool)));
dsMem.Tables[0].Columns["sel"].DefaultValue = 0 ;
CreatStyles(this.dataGrid1);
this.dataGrid1.DataSource = dsMem.Tables[0];
}
private void CreatStyles(DataGrid dg)
{
DataGridTableStyle style = new DataGridTableStyle();
style.MappingName = "trydata";
style.AlternatingBackColor = System.Drawing.Color.Bisque;
DataGridTextBoxColumn account = new DataGridTextBoxColumn();
account.HeaderText = "帐号";
account.MappingName = "m_account";
account.ReadOnly = true;
account.Width = 200;
DataGridBoolColumn sel =new DataGridBoolColumn();
sel.AllowNull=false;
sel.MappingName = "sel";
sel.HeaderText ="选择";
sel.Width =15;
sel.ReadOnly=false;
sel.TrueValue=true;
sel.AllowNull = false;
sel.FalseValue=Convert.DBNull;
sel.NullValue=Convert.DBNull;
style.GridColumnStyles.AddRange(new DataGridColumnStyle[]{sel,account});
dg.TableStyles.Clear();
dg.TableStyles.Add(style);
}
private void button1_Click(object sender, System.EventArgs e)
{
for(int i=0;i < dsMem.Tables[0].Rows.Count ; i++)
{
if(dsMem.Tables[0].Rows[i]["sel"].ToString() == "True")
{
string strSql = " update db_member set m_checked = 1, where m_id = " + dsMem.Tables[0].Rows[i]["m_id"];
refWeb.execSql(strSql);
MessageBox.Show("验证成功");
}
}
}
我想问的是
一 为什么这个CheckBox有三种状态,如何让它只有两种
二 在更新后,如何隐藏更改过的行,就是让DataGrid不再显示dsMem中已经在数据库中更新过的信息