Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
148 views
in Technique[技术] by (71.8m points)

c# - update sql column using a hyperlink in asp.net

I have an sql datasource inner joined with 2 tables (product table[product quantity column] and customer product table[ProductID,CustomerID,TotalProducts, UpdatedProducts])

Currently i have this code behind using a sql button:

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", scn);
            cmd.ExecuteNonQuery();
        }

though it works fine and upon button click, it updates all the fields in the updated products column but what i want to do is to do the same functionality but with a hyperlink. Also, it will only update a specific field. Here is an image to make it clearer:

enter image description here

UPDATE: so far i got this. html:

   <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="btnApprove" runat="server" Text="Approve" CommandName="UpdateProduct" CommandArgument='<%#Eval("CustomerID")+","+ Eval("ProductID") %>' />
            </ItemTemplate>
        </asp:TemplateField>

code behind:

 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 WHERE ProductID=@ProductID", scn);
                cmd.Parameters.AddWithValue("@ProductID", ID);
                cmd.ExecuteNonQuery();
            }
        }
    }

nothings happening here

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Here is a complete example.Hope it helps you:

.ASPX:

 <asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField DataField="CustomerID" />
            <asp:BoundField DataField="ProductID" />
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton ID="btnApprove" runat="server" Text="Approve" CommandName="UpdateProduct" CommandArgument='<%#Eval("CustomerID")+","+ Eval("ProductID") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

Code behind:

  public partial class GridViewRowCommandExample : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!Page.IsPostBack)
            {
                var p1 = new Product { CustomerID = 1, ProductID = 11 };
                var p2 = new Product { CustomerID = 2, ProductID = 22 };

                GridView1.DataSource = new List<Product> { p1, p2 };
                GridView1.DataBind();
            }
        }

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "UpdateProduct")
            {
                string[] parameters = e.CommandArgument.ToString().Split(',');
                int customerID = Int32.Parse(parameters[0]);
                int productID = Int32.Parse(parameters[1]);
                //Now that you know which row to update run the SQL update statement 
            }
        }
    }

    public class Product
    {
        public int CustomerID { get; set; }
        public int ProductID { get; set; }
    }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...