2011-04-04 81 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路径后,添加一条命令来处理超链接点击事件。

相关问题