gpt4 book ai didi

c# - 通过CodeBehind更新不同文件中控件的CSS

转载 作者:行者123 更新时间:2023-11-28 05:50:03 27 4
gpt4 key购买 nike

我有这个 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com