簡體   English   中英

GridView中的雙列,從C#中的后面代碼構建

[英]Double columns in GridView, building from code behind in C#

我正在嘗試使用RadioButton和CreditCardList中的數據填充GridView。 但是,它會將每個字段的列加倍……一組完整的列,然后是另一組完整的集(沒有RadioButton)。我已經檢查了creditCardList.items.Count並確保它僅為1(是)。 我究竟做錯了什么?

aspx:

<asp:GridView ID="gvCards" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None">
        <Columns>
            <asp:TemplateField HeaderText="Sel">
                <ItemTemplate>
                    <asp:RadioButton ID="Sel" runat="server" GroupName="rad" />
                </ItemTemplate>
            </asp:TemplateField>

            <asp:BoundField DataField="Name" HeaderText="Name" />
            <asp:BoundField DataField="Customer ID"  />
            <asp:BoundField DataField="Card ID" HeaderText="Card ID" />
            <asp:BoundField DataField="Card Number" HeaderText="Card Number" />
            <asp:BoundField DataField="Expiration" HeaderText="Expiration" />
            <asp:BoundField DataField="State" HeaderText="State" />
        </Columns>

    </asp:GridView>

后面的代碼:

DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Customer ID", typeof(string));
dt.Columns.Add("Card ID", typeof(string));
dt.Columns.Add("Card Number", typeof(string));
dt.Columns.Add("Expiration", typeof(string));
dt.Columns.Add("State", typeof(string));
        for (var i = 0; i < creditCardList.items.Count; i++)
        {
            DataRow row1 = dt.NewRow();
            row1["Name"] = creditCardList.items[i].first_name + " " + creditCardList.items[i].last_name;
            row1["Customer ID"] = creditCardList.items[i].external_customer_id;
            row1["Card ID"] = creditCardList.items[i].id;
            row1["Card Number"] = creditCardList.items[i].number;
            row1["Expiration"] = creditCardList.items[i].expire_month + "/" + creditCardList.items[i].expire_year;
            row1["State"] = creditCardList.items[i].state;
            dt.Rows.Add(row1);
        }
        gvCards.DataSource = dt;
        gvCards.DataBind();

輸出:Sel姓名卡ID卡號到期狀態名稱客戶ID卡ID卡號到期狀態Steve Ricketts%40LDN CON CARD-3F3 xxxxxxxxxxx1000 3/2020 ok Steve Ricketts%40LDN CON CARD-3F3 xxxxxxxxxxx1000 3/2020 ok

設置AutoGenerateColumns="false"

<asp:GridView ID="MyGrid" runat="server" AutoGenerateColumns="false">
     <Columns>
     </Columns>
</asp:GridView>

備注
AutoGenerateColumns屬性設置為true時,將自動為數據源中的每個字段創建一個AutoGeneratedField對象。 然后,每個字段在GridView控件中顯示為一列,順序是字段在數據源中出現的順序。 此選項提供了一種方便的方式來顯示數據源中的每個字段。 但是,您對自動顯示的列字段的顯示或行為控制有限。
您可以通過將AutoGenerateColumns屬性設置為false,然后創建一個自定義的Columns集合來手動定義列字段,而不是讓GridView控件自動生成列字段。 除了綁定列字段之外,您還可以基於您自己的自定義模板顯示按鈕列字段,復選框列字段,命令字段,超鏈接列字段,圖像字段或列字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM