GridView中的双列,从C#中的代码构建

时间:2016-07-27 17:24:17

标签: c# asp.net gridview

我正在尝试使用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();

输出: 卖方姓名卡身份证号码有效期限州名称客户身份证身份证号码有效期限到期状态     Steve Ricketts%40LDN CON CARD-3F3 xxxxxxxxxxx1000 3/2020 ok Steve Ricketts%40LDN CON CARD-3F3 xxxxxxxxxxx1000 3/2020 ok

1 个答案:

答案 0 :(得分:1)

设置AutoGenerateColumns="false"

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

<强> 说明
AutoGenerateColumns 属性设置为true时,将自动为数据源中的每个字段创建一个AutoGeneratedField对象。然后,每个字段在GridView控件中按字段显示在数据源中的顺序显示为列。此选项提供了一种显示数据源中每个字段的便捷方式;但是,您对自动生成的列字段的显示方式或行为方式的控制有限 您可以通过将AutoGenerateColumns属性设置为false,然后创建自定义Columns集合来手动定义列字段,而不是让GridView控件自动生成列字段。除了绑定列字段之外,您还可以显示按钮列字段,复选框列字段,命令字段,超链接列字段,图像字段或基于您自己定义的模板的列字段。