所以我有一个显示链接的用户控件,我想更改当前活动链接的颜色。这是我的 usercontrol 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”。这里发生了什么变化没有生效?