gpt4 book ai didi

c# - 如何使用 GridView 的 RowCreated 事件

转载 作者:行者123 更新时间:2023-11-30 17:59:27 24 4
gpt4 key购买 nike

问题:

我想在 gridview 数据绑定(bind)的中间添加标题。我更新了数据表以包含标题及其正确位置(我在调试期间检查过,它们在那里)。在包含标题的新行中,其中一个不需要的字段(不需要,因为在标题中不需要该信息)有一个名为“Subheader”的标志。

背景信息:

所以我的数据表行包含一个服务器名称,以及服务器所属的组。我更新了 DataTable,因此它插入了一个新行,其中服务器名称是标题文本。这个新行所属的服务器组是“Subheader”。我的数据表包含的信息比我的 gridview 显示的更多。我的 gridview 只需要一列,但有一个包含服务器组的 visibility=false; 列。

我想要实现的目标:

因此,当我将此数据表绑定(bind)到 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 的值,其中某处有我需要的信息。

  1. 这是我应该处理的正确事件吗?
  2. 我如何访问这些数据? e.Row.Cells[1].Texte.Row.Cells[1].ToString() 不返回我想要的结果,即使在调试我可以在e.Row
  3. 中找到我想要的值
  4. 我已经尝试找出它的具体工作原理,但找不到答案。如果我的 GridView 只有 2 个数据表列的列,e.Row.Cells 是否只有我的 gridview 需要的 2 个单元格,或者这是否发生在它分解数据表之前(即它是否有我的数据表中的所有列)

最佳答案

根据您绑定(bind)数据的方式以及获取服务器组的方式,您可以执行以下操作:

在您显示非标题行内容的项目模板中,使用两个占位符而不是纯文本,一个将保存非超链接文本的标签,另一个将保存超链接。您将这两个控件绑定(bind)到您使用的任何文本属性。并将这些占位符的可见性设置为 Eval("ServerGroup").ToString().ToLowerInvariant().Equals("subheader")!Eval("ServerGroup").ToString() .ToLowerInvariant().Equals("子标题")。这样您就不必编写代码来执行控件操作,也不必同时使用 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>

关于c# - 如何使用 GridView 的 RowCreated 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11207412/

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