【发布时间】:2013-06-05 06:40:09
【问题描述】:
我正在尝试使用下面的代码禁用特定的 grdview 行,但它并没有禁用该行。我100%确定绑定到gridview的列中有一个名为“Total Expenses”的值。更奇怪的是,我删除了 if 条件(accountTextBox.Text == "Total Expenses") 以查看是否所有行都被禁用但只有第一行被禁用。对此有什么想法吗?
更多信息:我正在使用带有模板字段(ASP.NET、C#)的 gridview。我还运行了调试器,发现 accountTextBox 显示为 NULL。我很困惑!
感谢您的任何想法。谢谢
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
if (!tableCopied)
{
originalDataTable = ((System.Data.DataRowView)e.Row.DataItem).Row.Table.Copy();
ViewState["originalValuesDataTable"] = originalDataTable;
tableCopied = true;
TextBox accountTextBox = (TextBox)e.Row.FindControl("AccountTextBox");
if (accountTextBox.Text == "Total Expenses")
{
e.Row.Enabled = false;
}
}
}
【问题讨论】:
-
tableCopied 设置在哪里?该值可能不会通过 PostBacks 持续存在。
-
感谢 Garrison,下面几行就在我之前发布的代码块的正上方:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } private bool tableCopied = false; private System.Data.DataTable originalDataTable; -
你能发布模板标记吗
-
也 - 变量不会持续存在,除非保存/恢复到/从视图状态或会话状态
-
他不需要持久化它们,因为他在代码隐藏中手动将 tableCopied 设置为 false。