2011-07-03 37 views
0

我現在正在學習T4模板,並且我在互聯網上獲得的所有示例都是關於使用表進行代碼生成的。我想使用存儲過程結果列來生成自動化的用戶界面,這有可能嗎?或者我必須爲相同的查詢創建視圖?在這種情況下,如何從視圖中讀取?T4模板:讀取存儲過程表的結果列

在此先感謝。

回答

0

我得到了解決,在這裏是如何可以從SP名稱

 

<# 
'requires: <#@ assembly name="System.Data" #> 
    dim Server as new Server(".\sqlexpress") 
    dim database as new Database(server, "xxxx") 
    dim strSpName as String= "sp_xxxx" 
    Dim dt as System.Data.DataTable= database.ExecuteWithResults("exec sp_GetEquipment").Tables(0) 
    dim ctlName as String = "grdEqp" 
#> 
<telerik:RadGrid ID="grd" runat="server" Skin="Web20" AutoGenerateColumns="false"> 
<MasterTableView> 
<Columns> 

<# 
    For Each column As System.Data.DataColumn In dt.Columns 
#><telerik:GridBoundColumn DataField="<#=column.ColumnName #>" HeaderText="<#=column.ColumnName #>"/> 
<#Next#> 
</Columns> 
       </MasterTableView> 
</telerik:RadGrid> 
 
0

直接生成拉德電網如果不真正想要的各種存儲過程有許多以執行存儲過程通過不同的參數,然後您可以使用sp_describe_first_result_set系統存儲過程返回結果集的列,假設只有一個。

/// <summary> 
/// Returns table for which stored procedures need to be generated. 
/// </summary> 

string TableName = "usp_getNominalCode"; 

string SchemaName = "Financial"; 

DataTable DataTable 
{ 
    get 
    { 
     if (_table == null) 
     { 
      Server server = new Server(new ServerConnection(new SqlConnection(this.ConnectionString))); 
      SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder(this.ConnectionString); 
      Database database = new Database(server, connectionStringBuilder.InitialCatalog); 
      DataSet storedProcedureColumns = database.ExecuteWithResults("sp_describe_first_result_set @tsql= " + "'[" + SchemaName + "]" + ".[" + TableName + "]'"); 
      _table = storedProcedureColumns.Tables[0]; 
     } 
     return _table; 
    } 
} 
DataTable _table; 

然後,您可以查詢該表,它的結構像其他答案,但它會是一個小更通用