Gridview控件在rowdatabound中禁用,但稍后未显示相同的设置

时间:2013-04-06 06:01:16

标签: gridview textbox c#-2.0

我根据某些条件禁用了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属性被认为是假的,当我期望它是真的时。

1 个答案:

答案 0 :(得分:0)

在RowDataBound事件中为控件应用自定义设置时要注意的一件事是,如果页面执行PostBack,除非重新绑定GridView,自定义设置将丢失。

可能的解决方法是确保始终在每个PostBack上重新绑定GridView,或者在PreRender事件中应用Enabled / ReadOnly设置,迭代DataRows,但是您还需要在某处存储SHIP_TRAIL_STATUS(隐藏在RowDataBound期间,您可以在PreRender中访问它 - ViewState将确保在PostBack期间存储的值保持静态。