【问题标题】:Hyperlink Reference to another column DevExpress Gridview ASP.Net Webform对另一列 DevExpress Gridview ASP.Net Webform 的超链接引用
【发布时间】:2016-07-06 22:28:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: asp.net vb.net gridview webforms devexpress


    【解决方案1】:

    请参考此网址解决您的问题

    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 字符串参数

    【讨论】:

    • 感谢您的回复,但我不确定这如何解决我的问题。我相信这个例子只是格式化单元格的当前值。如果第 0 行第 0 行有字符串“value1”,第 3 行第 0 行有字符串“value2”,我将如何格式化第 3 列 url 以包含第 0 列值。在此示例中,第 3 列第 0 行将具有链接:“~/details.aspx?Device=value1”。
    • 我已根据您的需要更改了代码,希望对您有所帮助。
    【解决方案2】:

    如果您想显示基于多列的超链接文本,那么 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

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 2017-12-10
      • 2012-04-25
      • 1970-01-01
      相关资源
      最近更新 更多