0

基本的に、リストをデータソースとして使用しているグリッドビューがあります。リスト内のどの列がどの列であるかをグリッドビューに伝えるにはどうすればよいですか?

        // Regions
        Dictionary<int, string> regions = (Master as SiteMaster).getCustomerRegions((Master as SiteMaster).userBasic_XsiteCustomerID);
        List<List<string>> regionsList = new List<List<string>>();
        foreach (int curRegionID in regions.Keys)
        {
            List<string> curRegion = new List<string>();
            Dictionary<string, string> curRegionDetail = (Master as SiteMaster).getRegionDetail(curRegionID);
            curRegion.Add(curRegionID.ToString());
            curRegion.Add(curRegionDetail["regionName"]);
            regionsList.Add(curRegion);
        }
        grv_regionManagement.DataSource = regionsList;
        grv_regionManagement.DataBind();

そのため、最初の列が実際には regionID であることをグリッドビューに伝える場所がないため、regionID が定義されていないというエラーが表示されます。

regionID フィールドを定義するための ASP.NET のコードを次に示します。

            <asp:TemplateField HeaderText="regionID" InsertVisible="False" 
                SortExpression="regionID" Visible="False">
                <EditItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("regionID") %>'></asp:Label>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("regionID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
4

2 に答える 2

1

文字列のリストのリストではなく、列をプロパティとして持つオブジェクトのリストを用意します。これらのプロパティを各列のデータソースとして使用できます。

于 2012-05-23T16:43:42.020 に答える
1

リストを手放しても構わない場合は、リストから DataTable を作成し、DataTable を DataSource として割り当てます。この SO 投稿を参照し、それを変更して、リストから DataTable を設定します。

このようにして、グリッドビューに何も伝えることを心配する必要はありません。

于 2012-05-23T17:52:35.143 に答える