2016-06-25 8 views
-2

Ich habe dies in meinem html:Mehrdeutige Spaltenname 'ProductID' in asp.net

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand = "GridView1_RowCommand" 
     DataSourceID="SqlDataSource1"> 
    <Columns> 
     <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" 
       SortExpression="CustomerID" /> 
     <asp:BoundField DataField="ProductID" HeaderText="ProductID" 
       SortExpression="ProductID" /> 
     <asp:BoundField DataField="TotalProduct" HeaderText="TotalProduct" 
       SortExpression="TotalProduct" /> 
     <asp:BoundField DataField="UpdatedProduct" HeaderText="UpdatedProduct" SortExpression="UpdatedProduct" /> 
     <asp:BoundField DataField="ProductQuantity" HeaderText="ProductQuantity" SortExpression="ProductQuantity" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="btnApprove" runat="server" Text="Approve" CommandName="Approve" CommandArgument='<%# Eval("ProductID") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:Myconn %>" 
     SelectCommand="SELECT CustomerProducts.*, Products.ProductQuantity FROM CustomerProducts INNER JOIN Products ON CustomerProducts.ProductID = Products.ProductID"> 
</asp:SqlDataSource> 

und hier ist der Code hinter:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
     if (e.CommandName == "Approve") 
     { 
      using (SqlConnection scn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True")) 
      { 
       scn.Open(); 
       SqlCommand cmd = new SqlCommand("update o set o.Updatedproduct = p.ProductQuantity - o.Totalproduct from CustomerProducts o inner join Products p on o.ProductID = p.ProductID WHERE [email protected]", scn); 
       cmd.Parameters.AddWithValue("@ProductID", ID); 
       cmd.ExecuteNonQuery(); 
      } 
     } 
    } 

Ich habe keine Ahnung, wirklich haben, was ist der Fehler, den ich bekomme. Was ich versuche, hier zu tun, ist auf Link klicken, aktualisiert es die updatedproduct Spalte. Hier

ist ein Screenshot

enter image description here

UPDATE:

ich diesen Fehler:

Conversion failed when converting the nvarchar value '__Page' to data type int.

enter image description here

+5

5 Fragen in 8 Stunden von denen alle Begriffe echte grundlegende SQL sind. Bitte nehmen Sie ein SQL-Tutorial. Dies ist keine Tutorialseite. Und Sie sind auf Microsoft SQL Server nicht mysql wir wissen jetzt nach der letzten Nacht. – Drew

Antwort

3

Da die Spalte ProductID in beiden Tabl vorhanden ist es, die WHERE Klausel finde es mehrdeutig. So

ersetzen [email protected] mit [email protected]

update o set o.Updatedproduct = p.ProductQuantity - o.Totalproduct 
from CustomerProducts o 
inner join Products p 
on o.ProductID = p.ProductID WHERE [email protected] 
+0

@ReineViray Ich kann '__Page' im Code in Ihrer Frage nicht sehen. – user3185569

+0

@ReineViray Haben Sie Trigger beim Update in der Datenbank? – user3185569

+0

was meinst du mit Trigger Sir? Tatsächlich funktioniert die Aussage, die ich jetzt habe, gut, wenn ich es mit einem Knopf probiere, aber das Problem ist es, alle 'updateproduct Spalte 'zu aktualisieren, und was ich will, ist nur eine einzelne Spalte nach dem Link klick sir zu aktualisieren. danke –