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

时间:2015-06-02 21:59:25

标签: asp.net gridview datatable

我将数据表绑定到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" />

使用ANSWER进行编辑:我终于开始工作,我发现VB中不存在三元运算符。

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

1 个答案:

答案 0 :(得分:0)

您的代码是正确的,您可能无法选中要检查的复选框,因为某些值可能会在开头或结尾处保存一个空格,因此您需要使用Trim()方法来确保您的条件满足调用ToUpper()将数据库值转换为大写,以便与大写Y匹配。

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