2011-12-06 26 views
0

私はVS2005 C#を使用しています。ドロップダウンリストコントロールでGridViewを更新

現在、私は、GridViewコントロールを持っている、と、私はデフォルトTextBoxから私はGenderListにコントロールのIDを与えたDropDownListに、私の列名Genderに私のGridViewコントロールのいずれかを変更している、そしてそれは2つの値が含まれていますMおよびF

私は以下の通りですedit後のGridViewを更新することができるデフォルトの更新ステートメントを、持っている:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString= 
"<%$ ConnectionStrings:SODConnectionString %>" UpdateCommand="UPDATE 
[UserMasterData] SET [Name] = @Name, [Age] = @Age, [ContactNo][email protected], 
[Address][email protected], [Gender][email protected]"/> 

上記のUPDATEクエリは完璧に動作し、今私は私のGenderテキストボックスを変更しました

Must declare the scalar variable "@Gender".

のDropDownListUPDATEクエリは私に言うエラーが発生しました

私はUPDATEクエリが私のGenderカラムから値を見つけられないと仮定します。

更新クエリを@GenderListに変更しようとしましたが、うまく機能しませんでした。

UPDATEクエリで自分の列にあるGenderListのドロップダウンリストの値を見つけることができるように、私は何をすべきか分かっていますか?

ありがとうございます。


以下は、テキストボックスコントロールと私の前Genderコラムです:以下

   <asp:BoundField HeaderText="Gender" 
       DataField="Gender" 
       SortExpression="Gender"></asp:BoundField> 

である私のGenderのDropDownListコントロール付き:

<asp:TemplateField HeaderText="Gender" SortExpression="Gender" > 
     <EditItemTemplate> 
      <asp:DropDownList ID="GenderList" runat="server" Width="50px" > 
       <asp:ListItem>M</asp:ListItem> 
       <asp:ListItem>F</asp:ListItem> 
      </asp:DropDownList> 
     </EditItemTemplate> 
     <ItemTemplate> 

EDIT:

RowDatBoundonRowUpdatingとを実現しようとした:


RowDatBound


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    DataRowView dRowView = (DataRowView)e.Row.DataItem; 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if ((e.Row.RowState & DataControlRowState.Edit) > 0) 
     { 
      DropDownList genderList= (DropDownList)e.Row.FindControl("GenderList"); 
      genderList.SelectedValue = dRowView[2].ToString(); 
     } 
    } 
} 

RowUpdating .aspx.cs


protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 

DropDownList genderSelect =(DropDownList)GridView1.Rows[e.RowIndex].FindControl("GenderList"); 

SqlDataSource1.UpdateParameters["Gender"].DefaultValue = 
genderSelect.SelectedValue; --> error says not set to an instance of an object 

} 
+0

http://stackoverflow.com/questions/8395365/asp-net-change-of-gridview-update-statement-after-templateediting/8395849#8395849もう1つの新しい質問と同じ質問???新しいスレッドで同じ質問をしても同じ質問をしないでください。同じユーザーでも同じです。http://stackoverflow.com/users/872370/ruihao –

+0

新しいアカウントを作成せず、再度同じ質問をしてください。また、***は*** asp.netとあなたの質問の先行を停止してください。タイトルにタグを追加する必要はありません。私たちは完璧に動作するタグシステムを持っています! – Will

答えて

2

を使用して編集モードをチェックしたりしないように、あなたがしなければならないすべては、結合2の方法を設定することですドロップダウンリストGenderListのために。

あなたはバインディングここでは2つの方法が使用されていることを予告

<EditItemTemplate> 
       <asp:DropDownList ID="GenderList" runat="server" 
        SelectedValue='<%# Bind("Gender") %>'> 
        <asp:ListItem>M</asp:ListItem> 
        <asp:ListItem>F</asp:ListItem> 
       </asp:DropDownList> 
      </EditItemTemplate> 

もソースに直接デザイナーを経て、これを設定したりすることができます。

+0

ありがとう、それは私を助けた – gymcode

+0

どのように私はこのドロップダウンを動的に入力できますか?私はすべてのRowDataBoundイベントでそれを行う必要がありますか? にテキスト値(「性別」の値ではない)をどのように設定しますか?どうも – Ranch

0

選択したvalueプロパティを使用する必要があります。ドロップダウンリストは値のコレクションですが、更新ステートメントにスカラー値を割り当てています。 更新モードで、ドロップダウンリストの選択項目値を取得し、その値を更新ステートメントのパラメータとして使用する必要があるかどうかを確認する必要があります。
Editing with Dropdownlist in gridview

あなたがSqlDataSourceコントロールを使用して、それを介してデータを更新する場合はRowDataBoundイベントでは、このように

if ((e.Row.RowState & DataControlRowState.Edit) > 0) 
+0

リンクありがとうございます。私は試してみましたが、私の参照がオブジェクトインスタンスに設定されていないことを指摘して、何らかのエラーが発生しました。 – gymcode

+0

あなたのオブジェクトが正しくインスタンス化されていることを確認してください。 –

関連する問題