GridView CheckBox禁用

时间:2013-10-28 03:15:23

标签: c# asp.net visual-studio-2010 gridview

我使用下面的代码填充了复选框的gridview

数据来源结果:

Branch,101,102,103,104,105,106,107,108,109,110  
00001,null,null,null,null,null,null,null,null,null,null  
00016,1,1,1,1,1,0,0,0,0,0
00244,1,1,1,1,1,1,1,1,1,1



 <asp:TemplateField HeaderText="101">
                <ItemTemplate>
                    <asp:CheckBox runat="server" id="cb101" Checked='<%# Eval("101").ToString().Equals("1") %>' />
                </ItemTemplate>
           </asp:TemplateField>... and so on

enter image description here 如果列为0和1,则它适用于复选框。 现在我需要做的是,如果列为null,则应禁用/ readonly

复选框

3 个答案:

答案 0 :(得分:2)

它应该是这样的:

 <asp:CheckBox runat="server" id="CheckBox1" Checked='<%# Eval("101").ToString()=="1" ? true : false %>' Enabled='<%#(String.IsNullOrEmpty(Eval("101").ToString()) ? false: true) %>'/>

它对我有用。

答案 1 :(得分:1)

另一种选择是使用GridView的{​​{1}}事件,该事件会触发绑定到网格视图的每一行,如下所示:

标记:

RowDataBound

代码隐藏:

<asp:GridView runat="server" id="GridView1" OnRowDataBound="GridView1_RowDataBound" />

注意:使用protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) { // Only work with data rows, ignore header and footer rows if(e.Row.RowType == DataControlRowType.DataRow) { if(DataBinder.Eval(e.Row.DataItem, "Difference") == null) { CheckBox the101Checkbox = e.Row.FindControl("cb101") as CheckBox; // Verify the check box was found before we try to use it if(the101Checkbox != null) { the101Checkbox.Enabled = false; } } else { if(DataBinder.Eval(e.Row.DataItem, "Difference") == "1") { CheckBox the101Checkbox = e.Row.FindControl("cb101") as CheckBox; // Verify the check box was found before we try to use it if(the101Checkbox != null) { the101Checkbox.Checked = true; } } } } } 事件提供了利用Visual Studio的Intellisense并通常将问题作为编译时语法错误捕获的优势,而RowDataBound会导致捕获问题作为运行时错误。

答案 2 :(得分:0)

试试这个

<asp:CheckBox runat="server" id="cb101" Checked='<%# Convert.ToString(Eval("101")) == string.Empty ? 'True' : 'False' %>' Enabled='<%# Eval("101")==null ? 'false': 'true' %>' />

这里101表示您的列名。

此致 Amit Vyas