2011-06-24 23 views
2

との問題は、私は、フォームGridview SqlDataSource;更新

UPDATE TableName 
    SET field1 = NewValue 
    WHERE field1 = OldValue 

の更新をやろうとしているが、私はGridViewコントロールでそれを行う方法はかなりわかりません。

私は私のGridViewのマークアップ

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1" AllowPaging="True" DataKeyNames="cftm_emp_name" PageSize="30"> 
    <Columns> 
     <asp:CommandField ButtonType="Image" SelectImageUrl="~/Images/sel.jpg" ShowSelectButton="True" /> 
     <asp:BoundField DataField="cftm_emp_name" HeaderText="CF Team Member" SortExpression="cftm_emp_name" /> 
     <asp:CommandField ShowEditButton="True" /> 
    </Columns> 
</asp:GridView> 

のためにこれを持っており、SqlDataSourceコントロールは、この

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
      ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT [cftm_emp_name] FROM [rpc_extra_cf_team_members] ORDER BY [cftm_emp_name]" OnUpdating="SqlDataSource1_Updating" UpdateCommand="UPDATE rpc_extra_cf_team_members SET cftm_emp_name = ? WHERE cftm_emp_name = ?"> 
      <UpdateParameters> 
       <asp:Parameter Name="cftm_emp_name" Type="String" /> 
       <asp:ControlParameter ControlID="GridView1" Name="cftm_emp_name" PropertyName="SelectedValue" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 

EDIT次のようになります。

エラーなしそれはちょうどそれを更新しません。 OnUpdatingイベントハンドラにブレークポイントを設定し、両方のパラメータがOldValueに設定されていることに気付きました。

追加情報が必要な場合は教えてください。私はこれについて助力をいただきたいと思います。

おかげ

+0

はたとえば、次のような更新クエリを使用できますか? –

+0

@bala正しいです。 –

+0

@TheOtherGuy - あなたにいくつかのエラーが表示されたら、あなたの質問を更新してください。 – Bibhu

答えて

0

は、テーブルにプライマリキーフィールドとしてSqlDataSourceコントロールのdatakeymemberプロパティを設定してみてください。それは

+0

なぜ同じファイルに2つのパラメータを使用していますか? –

+0

私は 'field1 = NewValueWHERE field1 = OldValue'を設定しました。同じフィールドに2つのパラメータを使用しています.1つはnewvalue、もう1つはoldValueです。 –

1

理由は、あなたがあなたの場合は=「cftm_emp_name」DataKeyNamesとして使用しているcftm_emp_name、名前の主キーフィールドを更新しているということであるのに役立ちます願っています。 GridViewのDataKeyNamesとして使用するテーブルのフィールドは、テーブルの主キーとして機能します。したがって、あなたのテーブルでは、 "cftm_emp_name"が主キーであり、主キーを更新することはできません。 "cftm_emp_name"フィールドを検索条件の主キーとして使用して、テーブルの他のフィールドを更新してみてください。そう、あなたがNEWVALUEにフィールド1のためにOldValueプロパティを持つすべての行を更新しようとしている

UpdateCommand="UPDATE rpc_extra_cf_team_members SET cftm_emp_add = @cftm_emp_add WHERE cftm_emp_name = @cftm_emp_name" 
<UpdateParameters> 
    <asp:Parameter Name="cftm_emp_add" Type="String" /> 
    <asp:Parameter Name="cftm_emp_name" Type="String" /> 
</UpdateParameters> 
関連する問題