0
votes

I'm using a for loop to add columns to the DevExpress ASP.Net WebForms GridView using VB.Net. I was able to get a hyperlink to reference the same column value:

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

I need to programmatically set the hyperlink to another column's value... i.e. column three needs to have a hyperlink that references the column 1 value in the same row. How do you access another column in that row using VB or C# during runtime?

2

2 Answers

1
votes

please refer this url to solve your problem

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

change your populate grid logic as

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);
}

here column itemName refer to itemValue as url string params

0
votes

If you want to show hyperlink text based on multiple columns then HyperlinkColumn is not the right approach to implement. It would be better use templates.

You should create DataItemTemplate for the column and there you can use Bind statement to format the display text or Hyperlink url as you want. It is the same approach used in ASP.NET GridView control and work in similar manner with ASPxGridView control.

I suggest you to go through these example and attached sample projects will help you know about the implementation.

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 - This contains sample attached in the answer.

Example: DataItemTemplate for column.

            <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>

or

<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