提交checkbox数据到数据库时,数据传不过去?谢谢

qq_27175311 2016-08-05 08:46:14
前台部分代码


<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" Width="100%"
AllowPaging="True" DataKeyNames="ID" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="20"
CellPadding="3" Font-Size="9pt" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" checked='<%# Bind("is_work") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ID" HeaderText="序号" SortExpression="ID" />
<asp:BoundField DataField="parameter_show" HeaderText="备件名称" SortExpression="parameter_show" />
</Columns>
</asp:GridView>

<asp:Button ID="Button1" runat="server" Text="提交" OnClick="Btn_Submit_Click" />


后台部分代码:


//提交勾选信息
protected void Btn_Submit_Click(object sender, EventArgs e)
{
sqlcon = new SqlConnection(strCon);
SqlCommand sqlcom;
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
CheckBox cbox = GridView1.Rows[i].FindControl("CheckBox1") as CheckBox;
try
{
string sqlstr = "";
if (cbox.Checked == true)
{
sqlstr = "update parameterManager set is_work=1 where ID=" + GridView1.DataKeys[i].Value + "'";
}
else
{
sqlstr = "update parameterManager set is_work=0 where ID=" + GridView1.DataKeys[i].Value + "'";
}
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
}
catch (Exception ex)
{

}
sqlcon.Close();
}
Bind();

}


is_work为一列bool数据

点提交按钮能读到checkbox中的数据但保存不到数据库中。。。



...全文
174 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_27175311 2016-08-05
  • 打赏
  • 举报
回复
引用 3 楼 insus 的回复:
看看这个: http://www.cnblogs.com/insus/archive/2011/11/07/2238927.html
谢谢你,我之前看过您的这个,非常感谢!
qq_27175311 2016-08-05
  • 打赏
  • 举报
回复
引用 2 楼 just59277 的回复:
CheckBox cbox = GridView1.Rows[i].FindControl("CheckBox1") as CheckBox; 调试看看 是不是读取到了 这个checkbox 感觉是这为空 另外 try catch了 做下处理吧,不然有时候出现什么异常都发现不了。
哇 感谢感谢,其实并不知道try catch怎么用,师兄建议我用这个处理异常=3= 删了后再把 sqlstr = "update parameterManager set is_work=1 where ID=" + GridView1.DataKeys[i].Value + "'"; 这句最后的引号删了就可以读进数据库了
insus 2016-08-05
  • 打赏
  • 举报
回复
just59277 2016-08-05
  • 打赏
  • 举报
回复
CheckBox cbox = GridView1.Rows[i].FindControl("CheckBox1") as CheckBox; 调试看看 是不是读取到了 这个checkbox 感觉是这为空 另外 try catch了 做下处理吧,不然有时候出现什么异常都发现不了。
qq_27175311 2016-08-05
  • 打赏
  • 举报
回复
数据绑定应该没有问题,初始页面可以读到数据库中的bool信息

public void Bind()
    {
        string sqlstr = "select ID, parameter_show,is_work from parameterManager where parameter_show is not null";
        sqlcon = new SqlConnection(strCon);
        SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
        DataSet myds = new DataSet();
        sqlcon.Open();
        myda.Fill(myds, "parameterManager");
        GridView1.DataSource = myds;
        GridView1.DataKeyNames = new string[] { "ID" };
        GridView1.DataBind();
        sqlcon.Close();
    }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧