Nic*_*rca 4 c# asp.net data-binding gridview button
我在gridview中添加了一个按钮列.我正在使用数据通过代码填充gridview,然后将数据绑定到网格.
我现在需要查看数据的第一列,并检查列的文本是否为"NA",如果它是该列中的按钮必须被禁用.....
我怎么能做到这一点?我正在从代码中填充数据,并且按钮被预先添加到标记中的网格中
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:ButtonField Text="Delete" />
</Columns>
</asp:GridView>
GridView1.DataSource = dt;
GridView1.DataBind();
Run Code Online (Sandbox Code Playgroud)
最好的OnDataBinding办法是Button在a中实现a的方法TemplateColumn.
例如:
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" ID="btnDelete" CommandName="Delete"
Text="Delete" OnDataBinding="btnDelete_DataBinding" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
然后在你的代码隐藏中实现你的逻辑:
protected void btnDelete_DataBinding(object sender, System.EventArgs e)
{
Button btn = (Button)(sender);
btn.Enabled = !Eval("TheFieldInYourDataSourceToCompare").ToString().Equals("NA");
}
Run Code Online (Sandbox Code Playgroud)
以这种方式对其他已发布的答案执行此操作的优势:
Button控件,如果其他Buttons需要相同的功能,则可以重复使用.DataSource值而不是视觉输出(这可能与渲染和检查的业务逻辑相关).希望有所帮助.