日期:2014-05-19  浏览次数:20486 次

DataGrid中模版列Checkbox的选中,删除问题。
一个Datagrid:dgitem   ,把它放在了一个Table里面,第一列用模版列添加了一个checkbox列,用来选择删除。
现在遇到的问题是,delete按钮点击后,checkbox的checked属性,一直都是false,无法正确获得是否被选中的信息。检查过后,发现是因为Datagrid在Table里面的问题,移出来之后,就可以正确判断是否被选中了。
想问一下,有没有让datagrid保留在table里面,checkbox又能够起到作用的方法?
有路过的高人做过的话,请指点指点。。。
private   void   btdelete_Click(object   sender,   System.EventArgs   e)
{
foreach(DataGridItem   dgi   in   this.dgitem.Items)
{
CheckBox   ckbox=(CheckBox)dgi.FindControl( "ckbdelete ");
if(ckbox.Checked)
{
//删除数据语句;
}
dgi.Controls.Clear();
}
}
删除按钮的句子,应该没错误吧。

------解决方案--------------------
private void btdelete_Click(object sender, System.EventArgs e)
{
foreach(DataGridItem dgi in this.dgitem.Items)
{
CheckBox ckbox=(CheckBox)dgi.FindControl( "ckbdelete ");
if(ckbox.Checked)
{
//删除数据语句;
dgitem.Controls.Remove(dgi);
}
}
}
------解决方案--------------------
发现是因为Datagrid在Table里面的问题,移出来之后,就可以正确判断是否被选中了。
===========================================================================
Datagrid放到 <from runat=server> </from> 里面
估计你的那个table不是在那里面的 所以提交的时候取不到Datagrid
------解决方案--------------------
这个是我写的一个类,你参考一下。。也许对你有帮助 ~~
public void DeleteQiansupply(DataGrid DGrid, string strsql)
{
DataGrid1 = DGrid;
ArrayList alist = new ArrayList();
System.Web.UI.WebControls.CheckBox box;
for (int i = 0; i < DataGrid1.Items.Count; i++)
{
box = ((CheckBox)this.DataGrid1.Items[i].Cells[3].FindControl( "CheckBox1 "));
if (box.Checked)
{
alist.Add(box.Text);

}
}

SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings[ "Str_sql "]);
con.Open();
int id = 0;
for (int i = 0; i < alist.Count; i++)              //循环 更新 被选种的项
{

id = Convert.ToInt32(alist[i]);
SqlCommand cmd_updata = new SqlCommand(strsql + " ' " + id.ToString() + " ' ", con);
// System.Web.HttpContext.Current.Response.Write(strsql+ " ' "+id.ToString()+ " ' "+ " <br> ");
cmd_updata.ExecuteNonQuery();
}
con.Close();
System.Web.HttpContext.Current.Response.Write( " <script> alert( '操作成功! '); </script> ");
}
------解决方案--------------------
private void btndelete_Click(object sender, System.EventArgs e)
{
for(int i=0;i <this.DG_Message.Items.Count;i++)
{
CheckBox mychk=(CheckBox)this.DG_Message.Items[i].FindControl( "chbox ");
if(mychk.Checked==true)
{
string MID=this.DG_Message.DataKeys[i].ToString();
//防止删除后导致页数减少而引发的绑定错误
string DeleteStr = "Delete Message where MID = ' " + MID + " ' ";
DBConn myDB = new DBConn();
myDB.Delete(DeleteStr);
myDB.Close();
DG_Message.EditItemIndex = -1;
}
}
//重新绑定
getMData();
Response.Write( " <script language=javascript> alert( '进程信息删除成功! '); </script> ");
}
删除按钮事件
------解决方案--------------------