今天遇到一个在 GridView直接对CheckBox控件进行编辑的问题...花了一点时间终于还是搞定了...拿出来和有兴趣的朋友分享.这样做可以不用进入编辑页面而直接操作一些简单数据处理.这样可以节省管理人员的时间.具体情况如下:
前后代码:<asp:GridView ID="GridView1" SkinID="BlueGridView" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="Comment_ID" >
<Columns>
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataNavigateUrlFields="Arti_PagePath" DataNavigateUrlFormatString="~/www/StaticPage/{0}"
DataTextField="Arti_Title" HeaderText="文章标题" />
<asp:BoundField DataField="Comment_ID" HeaderText="评论ID" />
<asp:BoundField DataField="Comment_UserName" HeaderText="评论者" SortExpression="Comment_UserName" />
<asp:CommandField HeaderText="评论内容" ShowSelectButton="True" SelectText="查看" />
<asp:TemplateField HeaderText="是否显示">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Comment_Visible") %>' OnCheckedChanged="CheckBox1_CheckedChanged" AutoPostBack="True" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Comment_Time" HeaderText="评论时间" SortExpression="Comment_Time" />
<asp:HyperLinkField DataNavigateUrlFields="Comment_ID,Arti_ID" DataNavigateUrlFormatString="Edit_Comment.aspx?Comment_ID={0}&Arti_ID={1}"
HeaderText="编辑" Text="编辑" />
<asp:TemplateField HeaderText="删除" ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" OnClientClick=" javascript:return confirm('你确认要删除吗?')"
CommandName="Delete" Text="删除"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
中间打红色的部分是主要内容,在Gridview中添加一个TemplateField并绑定相应的控件.
后台代码:
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox CheckBox1 = (CheckBox)row.Cells[4].FindControl("CheckBox1");
SqlConnection conn = Fun.InitConn();
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.CommandText = "update Comment set Comment_Visible = '" + CheckBox1.Checked.ToString() + "' where Comment_ID= '" + row.Cells[1].Text + "' ";
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
}
}
记住一定要把CheckBox控件的AutoPostBack属性设置为True