使用C#自动生成的行中的SQL Select ID

时间:2019-06-10 20:56:27

标签: c# sql asp.net

基本上,只要我按我网站上的一个按钮,就会生成带有ID和其他信息的某种报告。试图做的是用SQL语句更改表的一列。我设法进行了更改,但是代码更改了所有ID的列。我想做的是根据ID更改列,但是对于C#和SQL来说仍然是新手,所以我不确定如何获取自动生成的行。只是为了强调我正在使用网格视图中的按钮来更改列中的值。以下是我尝试过的方法:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

        string order = Request.QueryString["id"];

        SqlConnection con = new SqlConnection();
        con.ConnectionString = ConfigurationManager.ConnectionStrings["RCManiaConnectionString"].ConnectionString;
        con.Open();

        if (e.CommandName == "received")
        {
            SqlCommand com = new SqlCommand();
            com.Connection = con;
            com.CommandText = "UPDATE [Orders] SET Status = 'Received' WHERE [ID] ='" + order + "'";
            SqlDataReader data = com.ExecuteReader();

        }
    }

1 个答案:

答案 0 :(得分:0)

使用网格视图的DataKeyNames属性,您可以传递每个记录的主键值,并将其分配给CommandArgument下记录的按钮。下面的代码是工作代码。您可以尝试相同的方法。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
DataKeyNames="ID" OnRowDataBound="GridView1_RowCommand">
  <EmptyDataTemplate>
     No Data Found
  </EmptyDataTemplate>
  <Columns>
      <asp:TemplateField HeaderText="Update" ItemStyle-HorizontalAlign="Center">
       <ItemTemplate>
          <asp:ImageButton ID="btnUpdate" runat="server" CausesValidation="false" OnClick="btnUpdate_Click" CommandName="Select" ImageUrl="~/Contents/Images/classicPencil.svg" Width="20" Height="20"   Text="View" CommandArgument='<%#Eval("ID")%>' />
        </ItemTemplate>
       </asp:TemplateField>
  </Columns>
  </asp:GridView>

//使用直接按钮单击事件

 protected void btnUpdate_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton btn = sender as ImageButton;
        int ID = Convert.ToInt32(btn.CommandArgument);
        //Your code of update data process
    }

//使用网格行命令事件。

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int id = Convert.ToInt32(e.CommandArgument.ToString());
        //Your code of update data process
    }