3

私はC#が初めてなので、覚えておいてください。

安らかなWebサービス用にac#フロントエンドを構築しており、アイテムを入れたリストボックスがあります:

listBox.DataSource = list;
listBox.DataTextField = "name";
listBox.DataValueField = "id";
listBox.DataBind();

次に、アイテムを選択し、このコードをアクティブにするボタンをクリックします。

long id = Convert.ToInt64(listBox.SelectedItem.Value);

問題は、SelectedItem が null であることです。

私が言ったように、私は c# を初めて使用するので、何が問題なのかわかりません。

4

3 に答える 3

4

Page_Loadイベントで、次のようにします。

if(!IsPostBack)
{
    listBox.DataSource = list;
    listBox.DataTextField = "name";
    listBox.DataValueField = "id";
    listBox.DataBind();
}

注: これにより、ページが最初に読み込まれたときにリスト ボックスがバインドされますが、以前は選択したアイテムが消去されていたすべてのポスト バックではバインドされません。ASP.NET では、イベントが発生した後にクリック イベント ハンドラーが発生するPage_Loadため、バインド時に条件を設定しないと、イベント ハンドラーがユーザーが選択したものを見つける機会が得られる前に、ポスト バックのたびにデータが消去されます。 .

于 2013-08-16T15:07:02.913 に答える
0

ポストバックで選択内容がクリーム状にならないように正しくコーディングしたとしても、同じ症状を回避するために満たさなければならない別の要件があります。DataValueField を指定する場合、その列の値は一意である必要があります。ASP.NET DropDownList がポストバック時に選択した項目を保持しないという質問を参照してください

于 2013-11-04T05:57:16.433 に答える