gpt4 book ai didi

c# - 在后面的代码中更改用户控件 css 类

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:23 24 4
gpt4 key购买 nike

所以我有一个显示链接的用户控件,我想更改当前事件链接的颜色。这是我的用户控件 ascx 文件的 ListView 中的代码。

<asp:ListView ID="sidebarListView" runat="server" DataKeyNames="Id" DataSourceID="SqlDataSourceSidebar" OnItemCommand="sidebarListView_ItemCommand">
<ItemTemplate>
<div id="sidebarItemID" class="sidebarItem" runat="server">
<div>
<asp:LinkButton ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' CommandName="Select" CommandArgument='<%# Eval("Id") %>' />
</div>
</div>
</ItemTemplate>
....

我需要在单击链接按钮时更改 sidebarItemID 类。我的 default.aspx 代码如下所示:

private void SideBar1_ItemCommand ( object sender , EventArgs e ) {
Int32 facId = Sidebar1.FacultyId;
SqlDataSource1.SelectCommand = "SELECT [Id], [Name], [Faculty_Id], [User_Id], [Author], [Picture], [Location] FROM [Books] WHERE [Faculty_Id]=" + facId + " ORDER BY [DateAdded] DESC";
HtmlGenericControl htmlDivControl = (HtmlGenericControl) FindControlRecursive( Sidebar1 , "sidebarItemID" );
htmlDivControl.Attributes.Add("class", "sidebarItemActive");
string newClass = htmlDivControl.Attributes["class"];
//Response.Write( String.Format( "<script>alert('{0}');</script>" , newClass ) );
}

这会根据在用户控件中单击的链接的 ID 正确更改 sqlDataSource。但是类不会改变。

如果我取消对 Response.Write(...) 部分的注释,它会正确地给出一个提示“sidebarItemActive”,因此它会正确地从我的页面中找到控件并将其类属性分配为“sidebarItemActive”,但页面上没有任何变化如果我在浏览器中查看页面源代码,它会说该类仍然是“sidebarItem”。这里发生了什么变化没有生效?

最佳答案

实际<div>您页面上的 s 是在 ASP.NET Page Life Cycle 的呈现状态期间生成的.这发生在 Control 事件处理阶段之后,因此您在处理函数期间对 HTML 所做的任何更改都在呈现期间有效地撤消,因为控件的 HTML 是从模板重新生成的。在这种情况下,要让控件更改其内部 HTML,您可以将更新代码放在控件的重写 Render 函数中。 MSDN 有一个 example如何编写渲染函数。

关于c# - 在后面的代码中更改用户控件 css 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11249486/

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