如何使用GridView外部的按钮更新Asp GridView中选定行指定的数据库中的所有数据?

我寻找了一些类似的问题,但只找到了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);

}

单击按钮时,我收到消息

  

“对象引用未设置为对象的实例”

我想编写一个逻辑,其中遍历网格并将所选行的ID添加到一个字符串中,其中所有ID用逗号分隔:

1,2,3,4,5

然后,我将把这个字符串发送到存储过程,并在IN close内的查询中使用它们:

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

我不知道什么是解决问题的正确方法。

我该怎么做?

wangjing0613 回答:如何使用GridView外部的按钮更新Asp GridView中选定行指定的数据库中的所有数据?

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);
  }
本文链接:https://www.f2er.com/3156597.html

大家都在问