2011-07-03 6 views
0

私は今T4テンプレートを学習しています。インターネット上で得られるすべての例は、コード生成のためのテーブルの使用についてです。私は自動化されたUIを生成するためにストアドプロシージャの結果カラムを使用したいですか?または私は同じクエリのビューを作成する必要がありますか?その場合、どのように読書するか?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; 

関連する問題