将数据表值绑定到放置在 GridView 中的复选框中

Binding datatable values into a checkbox that's placed inside GridView

我正在将一个数据表绑定到一个 GridView,它的一个字段中有一个复选框。我无法根据数据表检查复选框。

这是我目前所拥有的:

 <asp:TemplateField HeaderText="Approved" SortExpression="Approved">
      <ItemTemplate>
      <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("Approved").ToString() == "Y" ? true : false %>'
                                 Enabled="false" />
      </ItemTemplate>
     <ItemStyle HorizontalAlign="Center" />
    </asp:TemplateField>

隐藏代码:

Dim adp As SqlDataAdapter = New SqlDataAdapter(sqlcmd)
Dim ds As DataSet = New DataSet()
adp.Fill(ds, "table_name")
dt = New DataTable()
dt = ds.Tables("table_name")
GridView1.DataSource = dt
GridView1.DataBind()

编辑:收到错误 BC30201:需要表达式。在这一行:

<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%#Eval("Approved").ToString() == "Y" ? true : false %>'
                             Enabled="false" />

编辑答案: 我终于让它工作了,我发现 VB.

中不存在三元运算符
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("Approved").ToString().ToUpper().Trim() = "Y" %>' Enabled="false"/>

你的代码是正确的,你可能没有让复选框被选中,因为一些值可能在开始或结束时用 space 保存,所以你也需要使用 Trim() 方法为确保您的条件满足调用 ToUpper() 将数据库值转换为大写,使其与大写匹配 Y.

<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("Approved").ToString().ToUpper().Trim() == "Y" ? true : false %>'
                             Enabled="false" />