关于Gridview的全选删除
我这个gridview ID是gvEmailInfo
前台:
<asp:TemplateField>
<HeaderTemplate>
<input id="select_all" onclick="checkFormAll(this.checked)" type="checkbox">
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="select_one" runat="server" />
</ItemTemplate>
</asp:TemplateField>
js:
<script type="text/javascript">
function checkFormAll(chk) {
form = document.getElementById("select_all");
for (var i = 0; i < form1.elements.length; i++) {
if (form1.elements[i].type == "checkbox") {
form1.elements[i].checked = chk;
}
}
}
</script>
后台:
protected void Page_Load(object sender, EventArgs e)
{
string sqlstr = "SELECT * FROM messageView WHERE Rreceiver='" + SnoOrTno + "'";
gvEmailInfo.DataKeyNames = new string[] {"Mno"};
sqloperate.gvBind(gvEmailInfo, sqlstr);
}
//删除button
protected void DelSelected_Click(object sender, EventArgs e)
{
string str_id = "";
for (int i = 0; i < this.gvEmailInfo.Rows.Count; i++)
{
CheckBox cbox = (CheckBox)gvEmailInfo.Rows[i].FindControl("select_one");
if (cbox.Checked == true)
{
string id = gvEmailInfo.DataKeys[i].Value.ToString();
if (i == this.gvEmailInfo.Rows.Count - 1)
{
str_id = str_id + id;
}
else
{
str_id = str_id + id + ",";
}
}
}
string delStr = "DELETE Receiver WHERE Mno in(" + str_id + ") AND Rreceiver='" + SnoOrTno + "'";
sqloperate.DataCom(delStr);
gvEmailInfo.DataBind();
}
数据库操作:
public void DataCom(string sqlstr)
{
sqlconn.Open();
SqlCommand sqlcomm = new SqlCommand(sqlstr, sqlconn);
sqlcomm.ExecuteNonQuery();
sqlconn.Close();
}
public void gvBind(GridView gv, string sqlstr)
{
sqlconn.Open();
SqlDataAdapter sqldataadapter = new SqlDataAdapter(sqlstr, sqlconn);
DataSet mydataset = new DataSet();
sqldataadapter.Fill(mydataset);
gv.DataSource = mydataset;
gv.DataBind();
sqlconn.Close();
}
现在的问题是功能没实现
症结是str_id的值一直为空(运行后 红色处的语句是DELETE Receiver WHERE Mno in() AND Rreceiver='" + SnoOrTno + "'")
想说的是这个gridview绑定的是一个视图(也就是messageView),和这个有关系么?
请前辈们指教,谢谢!!