簡體   English   中英

在 Silverlight DataGrid 中以編程方式創建超鏈接列

[英]Programmatically create Hyperlink Column in Silverlight DataGrid

我需要創建一個具有各種列的數據網格。 其中一列需要是指向 URL 的超鏈接。 例如,我可能在網格中有人員記錄,並且名稱將鏈接到指向用戶文件的 URL。 這是使用以編程方式創建的超鏈接在 Silverlight 中完成的。

我通過執行 RowDataBind 方法在 asp 中做到了這一點,我需要在 Silverlight 中做到這一點:

protected void gvOrderData_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // Setup links
        string OrderLink = "'http://crm1:5555/sfa/salesorder/edit.aspx?id={";

        e.Row.Cells[0].Attributes.Add("onclick", "window.open(" + OrderLink + DataBinder.Eval(e.Row.DataItem, "SalesOrderID").ToString() + "}','tester','scrollbars=yes,resizable=yes');");
        e.Row.Cells[0].Attributes.Add("onmouseover", "this.style.cursor='pointer'");
    }
}

不幸的是,您無法在代碼中創建 DataTemplate...但是您可以在 XAML 中創建一個 DataTemplate 作為資源,並將其分配給代碼中的列:

((DataGridTemplateColumn)dg.Columns[0]).CellTemplate = (DataTemplate)this.Resources["dt"];

來自: http : //forums.silverlight.net/forums/p/12912/41962.aspx

為什么你需要在代碼中做到這一點? 可以使用帶有適當模板的 DataGridTemplateColumn 在 XAML 中完成,例如:

<sdk:DataGridTemplateColumn Header="View" CellTemplate="{StaticResource MyDataTemplate}">
</sdk:DataGridTemplateColumn>

..並在頁面資源中定義模板

<DataTemplate x:Key="MyDataTemplate">
      <HyperlinkButton x:Name="ViewLink"
                Style="{StaticResource ViewButton}"
                Click="ViewLink_Click">
      </HyperlinkButton>
</DataTemplate>

您可以在后面的代碼中添加一些邏輯來打開子窗口,或者遵循純粹的 MVVM 路徑,添加一個命令來處理超鏈接單擊事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM