0

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>
4

1 に答える 1

2

DataSource を設定した後、DataBindメソッドを呼び出して何が起こるかを確認します

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

編集

以下のコードは問題なく動作します。テスト済み。

グリッドにデータがない場合、グリッドの 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();

作業サンプルは、このリンクから入手できます。

于 2012-08-24T17:27:32.627 に答える