2011-04-04 83 views
0

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

我這樣做是在ASP做一個RowDataBind方法,我需要做的這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'"); 


     } 

    } 

回答

0

可惜你不能在代碼中創建一個DataTemplate ...但是你可以創建一個DataTemplate XAML作爲一種資源,並將其分配給在代碼中的列:

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

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

0

爲什麼你需要做的代碼?它可以在XAML中使用DataGridTemplateColumn用合適的模板,如來完成:

<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路徑後,添加一條命令來處理超鏈接點擊事件。

相關問題