2016-07-06 116 views
0

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

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

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

回答

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

这里如果你要根据多个列中显示超链接文本,然后HyperlinkColumn不实施正确的方法列ITEMNAME指项目值作为URL字符串PARAMS

+0

感谢您的答复,但我不知道如何解决我的问题。我相信这个例子只是格式化了单元格的当前值。如果列0的行0的字符串为“value1”,列3的行0的字符串为“value2”,那么如何格式化第3列的url以包含列0的值。在这个例子中,列3行0将具有链接:“〜/ details.aspx?Device = value1”。 – DMC

+0

我已根据您的需要更改我的代码,我希望这可能有所帮助。 –

0

。这将是更好的使用模板。

您应该为列创建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