Как я могу обновить все данные в базе данных, указанной выбранными строками в Asp GridView, с помощью кнопки, расположенной вне GridView? - PullRequest
0 голосов
/ 05 ноября 2019

Я искал несколько похожих вопросов, но нашел только ListView решения

Но у меня есть GridView и кнопка за пределами GridView, и мне нужно обновлять только записи, указанные выбранным флажком.

<asp:GridView ID="gvData"
  runat="server" Width = "850px"
  CellPadding="5"
  AutoGenerateColumns="false"
  AllowPaging ="true"
  OnPageIndexChanging ="OnPaging" PageSize="5"> 
    <HeaderStyle CssClass="HeaderStyle" />
    <PagerStyle CssClass="HeaderStyle" HorizontalAlign="Center" />
    <AlternatingRowStyle CssClass="AlternatingRowStyle" />
    <RowStyle CssClass="RowStyle" />
    <RowStyle HorizontalAlign="Left" />
 <Columns>
    <asp:TemplateField HeaderText="Id" ItemStyle-Width="20px" Visible="false">
        <ItemTemplate>
            <asp:Label ID="lblId" runat="server" Text='<%# Eval("id") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Select" ItemStyle-Width="20px">
        <ItemTemplate>
            <asp:CheckBox ID="chkSelect" runat="server" Checked = "false"></asp:CheckBox>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Message" ItemStyle-Width="200px">
        <ItemTemplate>
            <asp:Label ID="lblMessage" runat="server"  Width="500px" Text='<%# Eval("Message") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>
<br />

<div style="text-align:left;">
   <asp:Button ID="btnChange" runat="server" Text="Change Type" OnClick="btnChange_Click" />
</div>

У меня есть метод btnChange_Click():

protected void btnChange_Click()
{

    int index = gvFailedMerchants.SelectedRow.RowIndex;

    DbConnection.UpdateMessageType(index);

}

Когда я нажимаю кнопку, я получаю сообщение

"Objectссылка не установлена ​​на экземпляр объекта "

Я хочу написать логику, в которой я пересекаю сетку и добавляю идентификаторы выбранной строки в одну строку, где все идентификаторы разделены запятыми:

1,2,3,4,5

Затем я отправлю эту строку в хранимую процедуру и буду использовать ее в запросе в течение IN close:

UPDATE MYTABLE SET column = myValue WHERE ID IN('1,2,3,4,5')

Я не знаю, как правильно подходить кпроблема.

Как я могу это сделать?

1 Ответ

0 голосов
/ 06 ноября 2019
Please try this,
 <asp:TemplateField HeaderText="Select" ItemStyle-Width="20px">
    <ItemTemplate>
        <asp:CheckBox ID="chkSelect" runat="server" Checked = "false"  
         OnCheckedChanged="ChkSelect_CheckedChanged" data-id='<%# Eval("id") %>'></asp:CheckBox>
    </ItemTemplate>
</asp:TemplateField>

  protected void ChkSelect_CheckedChanged(object sender, EventArgs e)
{
    try
    {
        CheckBox chkSel = sender as CheckBox;
        string id= chkSel.Attributes["data-id"].ToString();

        if (chkSel.Checked == true)
        {
            Session["ID"] += (Session["ID"].ToString() == "" ? id: "," + id);
        }
        else
        {
          string existingCodes = Session["ID"].ToString();
           Session["ID"] = existingCodes.Replace(id, "");               
       }
protected void btnChange_Click()
 {
    string ids =  Session["ID"].ToString();
    DbConnection.UpdateMessageType(ids);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...