如何将ListBox中的项目作为GridView的标题

时间:2012-08-24 17:24:00

标签: c# asp.net

我有一个ListBox,on_button点击,我希望ListBox中的所有项目都显示为GridView中的标题。 这是我尝试过的代码:

protected void DONE4_Click(object sender, EventArgs e)
    {
        Panel7.Visible = true;

        DataTable dt = new DataTable();
        for (int i = 0; i < ListBox1.Items.Count; i++)
        {
            dt.Columns.Add(ListBox1.Items[i].ToString());
        }
        GridView2.DataSource = dt;
        GridView2.DataBind();

        foreach (GridViewRow grdRow in GridView2.Rows)
        {
            DropDownList bind_dropdownlist = new DropDownList();                                                    // defining the property of the DropDownList as bind_dropdownlist
            bind_dropdownlist = (DropDownList)(GridView2.Rows[grdRow.RowIndex].Cells[0].FindControl("Pro_List"));   // finding the  DropDownList from the gridiew for binding
            SqlDataAdapter mydata = new SqlDataAdapter("SELECT DISTINCT Profile_Instance FROM Profile_Master", con);
            DataSet dset = new DataSet();                                                                           // binding the DropDownList with the dataset ds
            mydata.Fill(dset, "Table");
            bind_dropdownlist.DataSource = dset;
            bind_dropdownlist.DataTextField = "Profile_Instance";                                                   // set the DropDownList's DataTextField as designation which display the designation in the dropdownlist after fetching the data from database
            bind_dropdownlist.DataBind();
            bind_dropdownlist.Items.Insert(0, new ListItem("---Choose Profile---", "-1"));
        }
    }

我希望ListBox中的所有项目都显示为GridView中的标题字段。

上面的代码没有错误,但运行时它不起作用。有人可以帮我这个吗?

以下是GridView的设计代码:

<asp:Panel ID="Panel7" runat="server">
        <asp:GridView ID="GridView2" runat="server" CellPadding="4" ForeColor="#333333" 
            GridLines="None" style="text-align: center; font-size: small">

            <Columns>
            <asp:TemplateField HeaderText="">
                <ItemTemplate>
                    <asp:DropDownList ID="Pro_List" runat="server">
                        <asp:ListItem>--Select--</asp:ListItem>                          
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </asp:Panel>

1 个答案:

答案 0 :(得分:2)

设置DataSource后,调用DataBind方法,看看会发生什么

GridView2.DataSource = dt;
GridView2.DataBind();

编辑:以下代码运行正常。测试

如果Grid中没有数据,除非为网格提供EmptyText字段属性值,否则它甚至不会显示任何标题。

DataTable dt = new DataTable();
DataRow rw = default(DataRow);
for (int i = 0; i < ListBox1.Items.Count; i++)
{
    dt.Columns.Add(ListBox1.Items[i].ToString(),
                                   System.Type.GetType("System.String"));             
}
//Simply adding 10 rows
//Replace this hard coded loop with your looping 
// over your data to add rows.
for (int j = 0; j < 10; j++)
{
    rw = dt.NewRow();
    for (int i = 0; i < ListBox1.Items.Count; i++)
    {
        rw[ListBox1.Items[i].ToString()] = "Hello there";
    }              
    dt.Rows.Add(rw);
}
GridView1.DataSource = dt;
GridView1.DataBind();

link中提供了工作示例。