2013-02-26 38 views
4
<asp:SqlDataSource ID="HopefulDataSource" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
    SelectCommand= "SELECT id, regGroupID, amountReceived, other FROM table" 
    UpdateCommand="UPDATE table 
         SET [amountReceived] = @amountReceived 
         WHERE [regGroupID] = @regGroupID"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="ddlCourses" Name="ddlSelectedCourse" PropertyName="SelectedValue" Type="String" /> 
    </SelectParameters> 

    <UpdateParameters> 
     <asp:Parameter Name="regGroupID"  Type="Int32" /> 
     <asp:Parameter Name="amountReceived" Type="Decimal" /> 

     other parameters 

     <asp:Parameter Name="id"    Type="Int32" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

上述工程當我改變 「WHERE [regGroupID] = @regGroupID」 要麼爲什麼我的SqlDataSource的UpdateCommand不工作?

WHERE [ID] = @id

WHERE [regGroupID] = 2

+0

你是如何設置你的regGroupID參數的值? – 2013-02-26 14:27:22

+0

通過GridView行編輯 – statue 2013-02-26 14:28:46

回答

5

您需要在GridView聲明中將「regGroupID」添加到DataKeyNames集合中。事情是這樣的:

<asp:GridView ID="yourGridViewId" DataKeyNames="regGroupID" ... > 
    ... 
</asp:GridView> 

DataKeyNames documentation

您必須設置爲了DataKeyNames屬性爲自動 更新和刪除的GridView控件工作的特點。將這些鍵字段的值 傳遞給數據源控件,以便 指定要更新或刪除的行。

注意:這是我使用過的一段時間,因此您可能需要同時包含主鍵和其他關鍵字段。像這樣:

DataKeyNames="id,regGroupID" 
+1

您!你是個好人。非常感謝你做的這些!它默認只有ID,但增加了regGoupID結束工作時間和工作時間!當一件小事修復了一個巨大的問題時,我都恨惡和愛! 乾杯! – statue 2013-02-28 13:10:21

+1

@statue我完全知道你的意思。不客氣,我很樂意提供幫助。 – jadarnel27 2013-02-28 13:52:32