我根据某些条件禁用了gridview`中的TextBox
。
稍后,当我遍历griview
时,当我检查TextBox.Enabled属性时,它显示为true。但是我把它设置为假的那一行。
此代码位于rowdatabound事件中 我只是发布与问题相关的代码
TextBox txt_location = (TextBox)e.Row.Cells[htDGV_Map["Trailer's Last Location"]].FindControl("txt_location");
string remark_status = "";
string status = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "SHIP_TRAIL_STATUS"));
if (status.Equals("L"))
remark_status = "REMARK_POSTMARCH";
else
remark_status = "REMARK_REACH";
if (remark_status.Equals("REMARK_REACH"))
{
txt_location.ReadOnly = true;
}
稍后我试图访问此属性的值
TextBox txt_loc =
(TextBox)Gridrow.Cells[htDGV_Map["Tracking Trailers
Locations"]].FindControl("txt_location");
if(txt_loc.ReadOnly == true)
{
// other code
}
Here the property comes as false, although I am expecting it to be true.
我尝试使用ReadOnly
的{{1}}属性,但即使在这里TextBox
属性被认为是假的,当我期望它是真的时。
答案 0 :(得分:0)
在RowDataBound事件中为控件应用自定义设置时要注意的一件事是,如果页面执行PostBack,除非重新绑定GridView,自定义设置将丢失。
可能的解决方法是确保始终在每个PostBack上重新绑定GridView,或者在PreRender事件中应用Enabled / ReadOnly设置,迭代DataRows,但是您还需要在某处存储SHIP_TRAIL_STATUS(隐藏在RowDataBound期间,您可以在PreRender中访问它 - ViewState将确保在PostBack期间存储的值保持静态。