2010-11-19 7 views
2

現在、データを表示するために基本的なグリッドビューコントロールを使用する方法を学習しようとしています。.NET GridViewのアップデートでSQLクエリにユーザーIDが送信されない

まず、私はaspxページを通してすべてをやろうとしました。

これまでのところすべてがうまくいっていますが、更新クエリの使用に問題があります。

希望の結果は、ユーザー名と編集ボタンを表示する単純な2列テーブルです。

問題は、ユーザーIDを列に含めないと、クエリは何も更新しないということです。

これは私のSqlDataSourceコードです:

<asp:SqlDataSource 
    ID="sqlDataSource" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:conn %>" 
    SelectCommand="SELECT UserID, Name FROM tblUsers;" 
    UpdateCommand="UPDATE tblUsers SET Name = @Name WHERE UserID = @UserID"> 
    <UpdateParameters> 
     <asp:Parameter Name="Name" /> 
     <asp:Parameter Name="UserID" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

そして、これが私のGridViewである:

<asp:GridView 
    ID="Clients" 
    DataSourceID="sqlDataSource" 
    runat="server" 
    AllowPaging="true" 
    AllowSorting="true" 
    PageSize="25" 
    AutoGenerateColumns="False" 
    DataKeyNames="UserID"> 
    <Columns> 
     <asp:BoundField DataField="Name" HeaderText="Users Name" SortExpression="Name" /> 
     <asp:CommandField EditText="Edit" ShowEditButton="true" /> 
    </Columns> 
</asp:GridView> 

私はページに移動し、[編集]をクリックすると、テキストボックスに名前フィールドの変更、および私は期待どおりに更新かキャンセルを選択できます。

上記のコードでは、[更新]をクリックすると、SQLにUserIDが表示されないため、データを変更せずに通常の表が表示されます。

<asp:BoundField DataField="UserID" HeaderText="Users ID" SortExpression="UserID" /><Columns>に追加すると動作します。

UserID列をテーブルに追加することなくこの作業を行う方法はありますか?

答えて

3

あなたはOldValuesParameterFormatStringを使用することができます。

<asp:SqlDataSource 
    ID="sqlDataSource" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:conn %>" 
    OldValuesParameterFormatString="original_{0}" 
    SelectCommand="SELECT UserID, Name FROM tblUsers;" 
    UpdateCommand="UPDATE tblUsers SET Name = @Name WHERE UserID = @original_UserID"> 
    <UpdateParameters> 
     <asp:Parameter Name="Name" /> 
     <asp:Parameter Name="original_UserID" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 
1

列を追加し、VisibleFalseに設定します。

<asp:BoundField DataField="UserID" Visible="False" /> 
+0

私はちょうどそれを試みたが、残念ながらそれは動作しません。あなたの時間をありがとう! –

関連する問題