2017-04-21 11 views
0

辞書オブジェクトをgridviewにバインドする際に問題が発生しています。ASP.NET Gridviewで辞書オブジェクトをバインドする方法

 Dictionary<string, int[]> final_list = (Dictionary<string, int[]>)Session["InstrumentBatch"]; 
     //The data gets populated in the final_list 

     List<KeyValuePair<string, int[]>> kvp = new List<KeyValuePair<string, int[]>>(); 
     kvp.AddRange(final_list); 
     //Adding it to a list because Dictionary is not bind able in gridview. 

    gvData.DataSource = kvp; 
    gvData.DataBind(); 

私の.aspxページに書き込んで、グリッドビューにデータを入力する必要があります。任意のタイプのヘルプが歓迎されます。どんな質問にお気軽に

私はInstrumentType(辞書キー)とNEW、LN、PR、ANY(辞書値)としてのヘッダーを表示したいです。

おかげであなたがページに表示したいものに多くを依存し&よろしく

答えて

1

まあ、。一般的に、KeyValuePairはKeyとValueの2つのプロパティを公開しているので、これらをグリッドビューで使用できます。 BoundFieldで言う:

<asp:BoundField DataField="Key" HeaderText="Key" /> 
<asp:BoundField DataField="Value" HeaderText="Value" /> 

しかし、あなたの場合には、あなたが期待するよう、あなたの値が配列であるので、これは必ずしも、動作しません。そのために、テンプレートのいくつかの種類を使用することができます。列ごとの配列の値を分離

<asp:TemplateField HeaderText="Value"> 
    <ItemTemplate> 
     <%# String.Join(",", ((int[])Eval("Value"))) %> 
    </ItemTemplate> 
</asp:TemplateField> 

はTemplateFieldでも可能です:

<asp:TemplateField HeaderText="Value 0"> 
    <ItemTemplate> 
     <%# ((int[])Eval("Value"))[0] %> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Value 1"> 
    <ItemTemplate> 
     <%# ((int[])Eval("Value"))[1] %> 
    </ItemTemplate> 
</asp:TemplateField> 
... 
+0

それをバインドするには、配列は4つの値を持つことになるvalue..as ...それはそのよう@Andrei – Arka

+0

@Arka可能です、非常に可能です。 '<%# %>'の中にはC#コードだけなので、そんなことはまったく問題ありません – Andrei

+0

Thanks Buddy ...あなたは私の日を救った@Andrei – Arka

0

ことが可能です。

<asp:GridView ID="GV" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField DataField="Key" HeaderText="Dictionary Key" /> 
     <asp:BoundField DataField="Value" HeaderText="Dictionary Value" /> 
    </Columns> 
</asp:GridView> 

最初に値を追加します。

Dictionary<string, int[]> final_list = (Dictionary<string, int[]>) 
final_list.add(key,value); 
final_list.add(key, value); 

その後、私は私の辞書のための4つの列を持つようにしたい、

gridview.DataSource=final_list; 
gridView.DataBind(); 
関連する問題