SQL Select ID из автоматически сгенерированных строк с C # - PullRequest
0 голосов
/ 10 июня 2019

Как правило, всякий раз, когда я нажимаю кнопку на моем веб-сайте, он генерирует какой-то отчет с идентификатором и другой информацией. Что я пытаюсь сделать, это изменить один столбец таблицы с инструкциями SQL. Мне удалось изменить его, но код изменяет столбец для всех идентификаторов. Что я пытаюсь сделать, это изменить столбец в соответствии с идентификатором, но я все еще новичок в 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 голосов
/ 11 июня 2019

Используя 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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...