0

html コード:

        <ItemTemplate>
            <asp:Literal ID="faculty" runat="server" Text='<%#Eval("facultyname")%>'>
            </asp:Literal>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:DropDownList ID="fact" runat="server">
            </asp:DropDownList>

コードバイハインド:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

        {
            DropDownList dropdown = GridView1.Rows[e.NewEditIndex].FindControl("fact") as DropDownList;
            facultyDal c = new facultyDal();
            dropdown.DataSource = c.show();
            dropdown.DataBind();
            dropdown.DataTextField = "facultyname";
            dropdown.DataValueField = "facultyid";

        }

例外:

オブジェクト参照がオブジェクト インスタンスに設定されていません。

データソースでドロップダウンにバインドすると、上記の例外が発生します助けてください....

4

4 に答える 4

1

RowDataBound を使用してこのように試してください。

編集モードでのバインドの場合

protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && gvCustomers.EditIndex == e.Row.RowIndex)
    {
        DropDownList ddlfaculties = (DropDownList)e.Row.FindControl("fact");
        string query = "select distinct facultyname from your-Table-Name";
        SqlCommand cmd = new SqlCommand(query);
        ddlfaculties .DataSource = GetData(cmd);
        ddlfaculties .DataTextField = "facultyname";
        ddlfaculties .DataValueField = "facultyid";
        ddlfaculties .DataBind();
        ddlfaculties .Items.FindByValue((e.Row.FindControl("faculty") as Literal).Text).Selected = true;
    }
}

ドロップダウン リストから選択した値を更新します。

protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && gvCustomers.EditIndex == e.Row.RowIndex)
    {
        DropDownList ddlfaculties = (DropDownList)e.Row.FindControl("fact");
        string query = "select distinct facultyname from Your-Table-Name";
        SqlCommand cmd = new SqlCommand(query);
        ddlfaculties .DataSource = GetData(cmd);
        ddlfaculties .DataTextField = "facultyname";
        ddlfaculties .DataValueField = "facultyid";
        ddlfaculties .DataBind();
        ddlfaculties .Items.FindByValue((e.Row.FindControl("faculty") as Literal).Text).Selected = true;
    }
}
于 2012-07-05T06:41:53.073 に答える
0

コードを次のように変更します

GridView1.EditIndex

DropDownList dropdown = GridView1.Rows[GridView1.EditIndex].FindControl("fact") as DropDownList;
于 2012-05-19T11:47:08.783 に答える
0

グリッド ビュー rowdatabound evet を使用して、データをグリッド ビューの Web コントロールにバインドできます。

行を取得し、編集インデックスを使用してコントロールを見つけ、データをバインドします

于 2012-11-09T11:54:05.387 に答える
0

編集モードを有効にする前にデータをドロップダウン リストにバインドしようとしたために発生したエラーです。

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    gridbind();//fetch data from database and bind to grid
    DropDownList dropdown = GridView1.Rows[e.NewEditIndex].FindControl("fact") as DropDownList;
    facultyDal c = new facultyDal();
    dropdown.DataSource = c.show();
    dropdown.DataBind();
    dropdown.DataTextField = "facultyname";
    dropdown.DataValueField = "facultyid";
}
于 2013-02-18T07:35:26.153 に答える