[英]LinkButton Text property not changing after dynamic change
我已经尝试了很长时间,以了解为什么我的LinkButton文本在单击时会切换为“ on”,但是当我再次单击按钮时,即使在文件后面的代码中,我仍将LinkButton.text =“关闭”。 我已经运行了调试器,当我将文本设置为“ off”时,它就像setter方法实际上并没有更新那个特定的LinkButton对象,因为下次单击它就像它从未被更新一样。
我正在使用它来测试为什么我的面板在gridview模板字段内不会打开或关闭其可见性,因为单击按钮使面板可见,然后再次按下按钮时,会发生相同的情况该面板应消失,但仍保留在屏幕上。 我的目标是使网格行中的每一行都有一个切换链接按钮,该按钮显示一个下拉到每行下方的面板。
因此,问题的实质是,为什么我可以打开控件,但不能将其关闭?
我的标记本质上与以下相同。 注意,为清楚起见,所有实际的正确服务器属性均被省略。
我的另一个想法是,按钮呈现的阶段为时已晚,我无法做出将要放置在最终html上的更改?
谁能给我任何指示?
<asp:GridView>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<div id="wrapper">
<asp:LinkButton ID="LinkButton1" runat="server"
CommandArgument='<%# ((GridViewRow)Container).RowIndex %>'
Text="off" oncommand="changeName"></asp:LinkButton>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
背后的代码
protected void changeName(object sender, CommandEventArgs e)
{
GridViewRow row = MyGridView.Rows[Convert.ToInt32(e.CommandArgument)];
LinkButton button = (LinkButton)row.FindControl("LinkButton1");
if (button.Text.Equals("off"))
{
button.Text = "on";
}
else
{
button.Text = "off";
}
}
我通过在gridview上删除“ EnableViewState =“ False”`解决了该问题。
阅读本文后http://forums.asp.net/t/1590532.aspx?Visible+invisible+panel+inside+Gridview
它给了我关于整个回发过程的一些想法。 我不确定这是否正确,但对我来说有点道理?
如果我的gridview禁用了viewstate及其所有嵌套控件(例如“ Panel”和“ LinkButton”)的父级,则这些嵌套控件的状态将在回发时丢失。 因此,如果更改未保留在gridview的viewstate中,则我在文件后面的代码中修改的任何动态更改都将丢失。
可能有一种更好的方法来实现我的设计,但目前将viewstate保留在父控件上似乎可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.