网格视图中的超链接绑定到错误的行 1
本文关键字:错误 超链接 视图 网格 绑定 | 更新日期: 2023-09-27 17:56:15
我已经搜索了一下,还没有找到解决方案。
我有一个由下拉列表调用的存储过程填充的网格视图。查询工作正常,给了我一个带有值的表。您将看到我在第一列中编程了要转换为超链接的文本。
一切正常,除了第一行(不是标题行)没有链接。实际上,超链接地址将应用于下一行。因此,它将其余链接向下凸出一行。
我确实发现在调试时,似乎是第一个超链接中的单元格出现空值(")。当我在智能感知中遍历时,我确实发现该行确实显示了正确的属性(在 DataItem> Row> ItemArray 中有一个文本值)。
客户端
<asp:TableCell>
<asp:Label ID="ddlLabel" runat="server" Text="Choose a Group Folder: " />
<asp:DropDownList ID="ddlFolders" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ddlFolders_SelectedIndexChanged">
</asp:DropDownList>
</asp:TableCell>
<asp:TableCell ColumnSpan="2">
<asp:GridView ID="gvReportList" runat="server" AutoGenerateColumns="false"
CellPadding="5" OnRowDataBound="gvReportList_RowDataBound" Width="98%">
<Columns>
<asp:HyperLinkField HeaderText="Name" DataTextField="Name" Target="_blank" />
<asp:BoundField HeaderText="Description" DataField="Description" />
</Columns>
</asp:GridView>
</asp:TableCell>
服务器端 C#
// hyperlink binding by row for first column in gridview
protected void gvReportList_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Changes text in the first column into HyperLinks
HyperLinkField nameLink = gvReportList.Columns[0] as HyperLinkField;
string linkPath = "http://inserted-address-here";
if (e.Row.RowType == DataControlRowType.DataRow)
{
//applies a unique suffix to the address depending on the link name
HyperLink nameHl = (HyperLink)e.Row.Cells[0].Controls[0];
string nameText = nameHl.Text;
string linkSuffix = nameText.Replace(" ", "+");
nameLink.NavigateUrl = linkPath + linkSuffix;
}
}
我只能假设它与我将超链接绑定到网格视图的顺序有关。或者它与第一行产生空值有关,即使那里有数据。
string linkSuffix = Datainder.Eval(e.DataItem, "Name").ToString().Replace(" ", "+");
nameLink.NavigateUrl = linkPath + linkSuffix;