对另一列 DevExpress Gridview ASP.Net Webform 的超链接引用

Hyperlink Reference to another column DevExpress Gridview ASP.Net Webform

我使用 for 循环将列添加到 DevExpress ASP.Net WebForms GridView 使用 VB.Net。我能够获得引用同一列值的超链接:

Dim newColumn As New DevExpress.Web.GridViewDataHyperLinkColumn
newColumn.PropertiesHyperLinkEdit.NavigateUrlFormatString = "TrendView.aspx?CurrentID={0}"

我需要以编程方式将超链接设置为另一列的值...即,第三列需要有一个引用同一行中第一列值的超链接。如何在运行时使用 VB 或 C# 访问该行中的另一列?

请参考此url来解决您的问题

https://www.devexpress.com/Support/Center/Example/Details/E308

将您的填充网格逻辑更改为

ASPX :

<dx:ASPxGridView ID="ASPxGridView1" runat="server"></dx:ASPxGridView>

CS

protected void Page_Init(object sender, EventArgs e)
{
     ASPxGridView1.KeyFieldName = "ID";
     ASPxGridView1.DataSource = GetData();
     if (!IsPostBack && !IsCallback)
     {
         PopulateColumns();
         ASPxGridView1.DataBind();
     }
}

public DataTable GetData()
{
    DataTable Table = new DataTable();
    Table.Columns.Add("ID", typeof(int));
    Table.Columns.Add("ItemName", typeof(string));
    Table.Columns.Add("ItemValue", typeof(string));
    Table.Rows.Add(1, "A","AA");
    Table.Rows.Add(2, "B","BB");
    return Table;
}

public void PopulateColumns()
{
    GridViewDataTextColumn colID = new GridViewDataTextColumn();
    colID.FieldName = "ID";
    ASPxGridView1.Columns.Add(colID);

    GridViewDataTextColumn srk = new GridViewDataTextColumn();
    srk.FieldName = "ItemValue";
    ASPxGridView1.Columns.Add(srk);

    GridViewDataHyperLinkColumn colItemName = new GridViewDataHyperLinkColumn();
    colItemName.FieldName = "ItemValue";
    colItemName.PropertiesHyperLinkEdit.NavigateUrlFormatString = "~/details.aspx?Device={0}";
    colItemName.PropertiesHyperLinkEdit.TextFormatString = "{0}";
    colItemName.PropertiesHyperLinkEdit.TextField = "ItemName";
    ASPxGridView1.Columns.Add(colItemName);
}

此处的列 itemName 将 itemValue 称为 url 字符串参数

如果您想显示基于多列的超链接文本,那么 HyperlinkColumn 不是正确的实现方法。最好使用模板。

您应该为该列创建 DataItemTemplate,然后您可以根据需要使用 Bind 语句来格式化显示文本或超链接 url。它与 ASP.NET GridView 控件中使用的方法相同,并且以与 ASPxGridView 控件类似的方式工作。

我建议您通过这些示例和附加的示例项目将帮助您了解实现。

ASPxGridView - How to customize HyperLink column
How to use a hyperlink whose argument depends on several cell values in the ASPxGridView How to customize navigate URL for HyperLink column within a ASPxGridView - 这包含答案中附带的示例。

示例: 列的 DataItemTemplate。

            <dxwgv:GridViewDataTextColumn FieldName="ContactName" VisibleIndex="3">
                <DataItemTemplate>
                    <dxe:ASPxComboBox ID="ASPxComboBox1" runat="server" ValueType="System.String" DataSourceID="AccessDataSource1"
                        TextField="ContactName" ValueField="ContactName" Value='<%#Bind("ContactName")%>' OnSelectedIndexChanged="ASPxComboBox1_SelectedIndexChanged">
                        <ClientSideEvents SelectedIndexChanged="onSelectedIndexChanged" />
                    </dxe:ASPxComboBox>
                </DataItemTemplate>
            </dxwgv:GridViewDataTextColumn>

<dx:ASPxHyperLink ID="ASPxHyperLink3" runat="server"
    NavigateUrl='<%# string.Format("~/AccountDetail.aspx?CategoryID={0}", Eval("i_Customer")) %>'
    Text='<%# string.Format("i_Customer{0}", Eval("i_Customer")) %>' .../>

ASPxGridView - ASPxHyperLink Navigate URL formatting
ASPxGridView - How to set GridViewDataHyperlinkColumn's text and navigate url