![](/img/trans.png)
[英]How do I use the sender in a GridView RowCreated event to see if an Gridview Button was fired?
[英]How do I use the RowCreated event for GridViews
问题:
我想在gridview数据绑定中间添加标题。 我更新了DataTable以包含标题及其正确位置(我在调试期间检查过,它们就在那里)。 在包含标头的新行上,其中一个不需要的字段(不需要在标题中不需要该信息)中有一个名为“Subheader”的标志。
背景资料:
所以我的数据表行包含服务器名称和服务器所属的组。 我更新了DataTable,因此它插入了一个新行,其中服务器名称是标题文本。 此新行所属的服务器组是“Subheader”。 我的数据表比我的gridview显示的信息更多。 我的gridview只需要一列,但有一列其visibility=false;
它包含服务器组。
我想要实现的目标:
因此,当我将此数据表绑定到gridview时,我希望所有非标题行都是指向另一个位置的链接。 作为标题的所有数据行我都希望保留原样。
码:
private void CurrentServers_RowCreated(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if(e.Row.Cells[1].Text != "Subheader")
{
e.Row.Cells[0].Text = "<a href='/EventViewer.aspx?m=" + e.Row.Cells[0].Text + "&s=&e=Application&r=25'>" + e.Row.Cells[0].Text + "</a>";
}
}
}
问题:
这不起作用。 e.Row.Cells[1].Text != "Subheader"
总是返回true。 在调试中,我检查e.Row.Cells[1].Text
的值,在那里它有我需要的信息。
e.Row.Cells[1].Text
和e.Row.Cells[1].ToString()
不返回我想要的结果,即使在调试时我可以在e.Row
找到我想要的值 e.Row.Cells
只有我的gridview需要的2个单元格,或者它是否会在分解数据表之前发生(即它是否具有我的数据表所具有的所有列) ) 根据您绑定数据的方式以及获取服务器组的方式,您可以执行以下操作:
在您显示非标题行内容的项目模板中,使用两个占位符代替纯文本,一个将保留非超链接文本的标签,另一个将保留超链接。 您将两个控件绑定到您使用的任何文本属性。 并将这些占位符的可见性设置为Eval("ServerGroup").ToString().ToLowerInvariant().Equals("subheader")
和!Eval("ServerGroup").ToString().ToLowerInvariant().Equals("subheader")
。 这样你就不必编写代码来执行控制操作并且不再使用RowDataBound事件。
如果这没有意义,请告诉我:)
编辑:
<asp:GridView ID=".." runat="server" ...>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:PlaceHolder id="phTextContent" runat="server" visible='<%# Eval("ServerGroup").ToString().ToLowerInvariant().Equals("subheader") %>'>
<asp:Label id="lblServerGroup" runat="server" text='<%#Eval("ServerGroup")%>'/>
</asp:PlaceHolder>
<asp:PlaceHolder id="phTextContent" runat="server" visible='<%# !Eval("ServerGroup").ToString().ToLowerInvariant().Equals("subheader") %>'>
<asp:HyperLink id="hlServerGroup" runat="server" Text='<%#Eval("ServerGroup")%>' NavigateUrl='<%#string.Fromat("/MyAction.aspx?param=", Eval("Param"))%>'/>
</asp:PlaceHolder>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.