【问题标题】:how to bind check box values on gridview with the values of database table?如何将gridview中的复选框值与数据库表的值绑定?
【发布时间】:2013-08-28 07:49:18
【问题描述】:

我有一个位类型的数据表列“员工”。在我的网格视图中,我添加了复选框的项目模板。如果“staff”列的值在数据绑定上 =1,我想显示选中的复选框。其他明智的未检查..从我这样写的搜索中

<ItemTemplate>
   <asp:CheckBox ID="chk1" runat="server" Checked='<%# bool.Parse(Eval("staff").ToString()) %>'/>      
</ItemTemplate>

 DataSet ds = new DataSet();
 SqlDataAdapter adapter = new SqlDataAdapter("SELECT id,staff FROM staff_details  ", con1);
 adapter.Fill(ds);
 GridView1.DataSource = ds;
 GridView1.DataBind();

但它显示错误“System.FormatException:字符串未被识别为有效的布尔值。”请帮忙

【问题讨论】:

  • 检查我的答案,工作和测试

标签: c# asp.net gridview


【解决方案1】:

经过测试和工作:

#UPDATE1

Checked='<%#Convert.ToBoolean(Eval("staff")) %>'

<ItemTemplate>
   <asp:CheckBox ID="chk1" runat="server" Checked='<%#Convert.ToBoolean(Eval("staff")) %>' />      
</ItemTemplate>

【讨论】:

    【解决方案2】:

    ASPX:

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
        <Columns>
            <asp:TemplateField HeaderText="ID">
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Staff">
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("staff") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    

    后面的代码:

    protected void Button1_Click(object sender, EventArgs e)
    {
        string conStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\website\w2\App_Data\Database.mdf;Integrated Security=True;User Instance=True";
        SqlConnection con1 = new SqlConnection(conStr);
        con1.Open();
        DataSet ds = new DataSet();
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT id,staff FROM staff_details  ", con1);
        adapter.Fill(ds);
        GridView1.DataSource = ds;
        GridView1.DataBind();
        con1.Close();
    }
    

    【讨论】:

    • 是的,我已将其设置为位类型。但显示相同的错误@Samiey Mehdi
    • 我的问题出在查询上。它应该类似于“SELECT id,CAST(CASE staff WHEN '1' THEN 1 ELSE 0 END AS BIT) AS staff FROM staff_details”, con1); @Samiey Mehdi
    • 如果您的员工数据库字段类型是位然后只需使用 select id, cast(coalesce([staff],0) as bit) as 'staff' 您不必担心空值之后那个。
    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多