2009-06-12 17 views
0

上のGridView内のドロップダウンリストから選択した値を取得する、各行は、[編集]ボタンがあります。クリックすると、列の1つがユーザーが値を選択できるドロップダウンリストに変わります。編集ボタンが更新になります - とても簡単な通常のシナリオです。は、私がGridViewコントロールを持って更新

今、私は更新がクリックされた後、選択のドロップダウンリストをつかむことができていないようです。ここに私のコードです:

protected void gv_UpdateRow(string arg) 
{ 
    int currentIndex = gv.EditIndex; 
    gv.EditIndex = -1; 

    GridViewRow currentRow = gv.Rows[currentIndex]; 

    try 
    { 
     string value2 = ((DropDownList)currentRow.FindControl("ddlValueTwo")).SelectedItem.ToString(); 

    } 
    catch 
    { 
     Response.Write("error"); 
    } 


    BindGridView(); 
} 

したがって、プログラムの実行は常にcatchステートメントで終了します。チェックしてドロップダウンリストが見つかった場合、選択された項目が見つからないと例外がスローされます。

何がありますか?私はC#のasp.net 2.0ウェブは

+0

ために右のそれを得たが、静的またはバインドされているドロップダウンリスト内の値はありますか? –

答えて

1

はそれを得た、あなたはまだ存在しないよアクセスデータを...しようとしているデータバインディングエラーのように見えます!

は、それは私がGridViewのはリバウンドすべてのページのロードされていたので、それを欠けていた、とドロップダウンリストがグリッド内であるため、データが失われた、IsPostBackプロパティでした。

しかし、ここで言及しておきたいことは、このコードがすべてユーザーコントロール(ascxファイル)内にあり、IsPostBackプロパティがコントロールではなくページに適用されていることです。例えば、私の状況で、私は手動でコントロールを追加しますので、IsPostBackプロパティはいつも、私はセッションベースのソリューションを実装する必要がありました。この問題を回避するために、trueになります。これが誰かを助けることを望みます。

ありもusercontrol.IsPostBackプロパティが、期待どおりに実行しなかった、おそらく彼らは3.0

0

最初の考えを形成して使用

あなたはおそらく、むしろ()をSelectedItem.ToStringよりSelectedItem.Value行うべきであるということです。

+1

それとも((DropDownListコントロール)currentRow.FindControl( "ddlValueTwo"))SelectedValueの。 –

+0

あまりにも真実です。どちらかがSelectedItem.ToString()より優れているだろうが、コントロールが見つかったがselectedItemがnullかオブジェクトではないので、実際に問題があるかどうかは疑問だ。 – Harv

+0

はFYI:私が選択した項目と選択した値の両方が必要です。 – sarsnake

関連する問題