1

Gridview を使用してデータを表示しています。グリッドビューの EditItemTemplate では、グリッドビューの列の 1 つに DropDownList を使用しています。gridviewのDataSourceはテーブル「UserEntries」です。また、ドロップダウンのデータソースは別のテーブル「TypeEntries」です。TypeEntries の列は、Guid と TypeName です。Guid はドロップダウンの DataValueField、TypeName は DataTextField です。UserEntries テーブルにドロップダウンの DataValueFiels を格納しています。

ユーザーがグリッドビューの編集ボタンをクリックすると、ドロップダウンに「TypeEntries」テーブルを設定する方法は? 私は使っている

    Dropdownlist tempddl = new Dropdownlist();
    tempddl = (Dropdownlist)gvUserData.FindControl("ddlTypeListInGrid");
    tempddl.DataSource = _section.GetTypeEntries();
    tempddl.DataBind();

しかし、それは機能していません。このタスクを実行する他の方法を教えてもらえますか? 前もって感謝します。

4

5 に答える 5

1

「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」例外的に、「ddlTypeListInGrid」コントロールが見つからなかったことを意味します。したがって、 NULL ( NOTHING ) をターゲット タイプにキャストすることはできません。

おそらく、間違ったページのライフサイクルでこのコードを実行します。後の oage イベント (Load、LoadComplete など) のいずれかで試してみるか、コンテナーに ID "ddlTypeListInGrid" のコントロールが本当に含まれているかどうかを確認してください。

于 2009-01-16T12:13:41.347 に答える
0

Convert.ChangeType をお探しですか。問題を解決するには、さらにコードを確認する必要があります。

于 2009-01-16T12:06:03.360 に答える
0

関数のコード全体をアップロードしています。

protected void gvUserData_OnRowEditing(object sender, GridViewEditEventArgs  e)
{
    gvUserData.EditIndex = e.NewEditIndex;

    gvUserData.DataSource = _section.GetUserEntries();
    gvUserData.DataBind();

    DropDownList tempddl = new DropDownList();       //I am not sure whether this is correct or not..        
    tempddl = (DropDownList)gvUserData.FindControl("ddlTypeListInGrid");
    tempddl.DataSource = _section.GetTypeEntries();
    tempddl.DataBind();        

}
于 2009-01-16T12:11:08.450 に答える
0

C# では大文字と小文字が区別されるため、DropDownList代わりに使用する必要があります。

于 2009-01-16T11:43:03.890 に答える
0

補足として(問題とは関係ありませんが、参考までに)次の行:

 DropDownList tempddl = new DropDownList();       

になり得る :

 DropDownList tempddl;

次の行で、「ddlTypeListInGrid」という名前のインスタンスを見つけようとしているため、DropDownList の新しいインスタンスを作成する必要はありません。次に、Tcks が言ったように、ddlTypeListInGrid コントロールが存在しない場合、NullReferenceException が発生する可能性があります。

于 2009-01-16T14:01:39.647 に答える