我有这个 AJAX 按钮,我想更新一些 CSS。问题是我希望它更新的控件位于不同的文件中,无法从该文件中移出。
这是我要更新其 CSS 的面板,它位于 Site.master 文件中:
<asp:ScriptManager ID="ScriptManager" runat="server" />
<asp:UpdatePanel ID="Panel2" runat="server" updatemode="Always">
<ContentTemplate>
<div id="updateThis" runat="server"><p>Test text</p></div>
</ContentTemplate>
</asp:UpdatePanel>
这是位于 Items.ascx 文件中的按钮:
<asp:UpdateProgress runat="server" ID="PageUpdateProgress">
<ProgressTemplate>
<img class="ajax-loader" src="/Images/ajax-loader.gif" alt="Loading..." />
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="Panel3" runat="server" updatemode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger controlid="UpdateButton" eventname="Click" />
</Triggers>
<ContentTemplate>
<asp:Button runat="server" OnClick="UpdateButton"
OnClientClick="hideButton()" Text="Update"
class="update" ID="UpdateButton" name="UpdateButton"
type="submit" ></asp:Button>
</ContentTemplate>
</asp:UpdatePanel>
这是 Items.ascx.cs 方法即 UpdateButton
protected void UpdateButton(object sender, EventArgs e)
{
var masterPage = this.Page.Master;
var updatePanel = masterPage.FindControl("Panel2");
var div = (HtmlGenericControl)updatePanel.Controls[0].FindControl("updateThis");
div.Style.Add("color", "#ff0000");
}
当我点击按钮时,它并没有正常工作。截至目前,使用 AJAX UpdateProgress 模板,它会显示正在加载的 GIF,然后 GIF 消失,文本颜色永远不会改变。
编辑
希望这能让我们更好地了解哪里出了问题:
这行得通
protected void UpdateButton(object sender, EventArgs e)
{
var masterPage = this.Page.Master;
var updatePanel = masterPage.FindControl("Panel2");
var div = (HtmlGenericControl)updatePanel.FindControl("updateThis");
div.Style.Add("color", "#ff0000");
UpdateButton.Text = "Done!";
}
我在 FindControl() 方法中使用了#updateThis。不要像我一样!
最佳答案
您应该将 runat="server"
属性添加到 div 控件,以使其在代码隐藏中可见:
<div id="updateThis" runat="server"><p>Test text</p></div>
您还可以删除事件处理程序中的 Controls[0]
(但根据我的测试,如果您保留它,它会起作用):
protected void UpdateButton(object sender, EventArgs e)
{
var masterPage = this.Page.Master;
var updatePanel = masterPage.FindControl("Panel2");
var div = (HtmlGenericControl)updatePanel.FindControl("updateThis");
div.Style.Add("color", "#ff0000");
}
关于c# - 通过CodeBehind更新不同文件中控件的CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37392487/