asp.net - 如何使用位于 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
关闭的查询中使用它们:
UPDATE MYTABLE SET column = myValue WHERE ID IN('1,2,3,4,5')
我不知道解决问题的正确方法是什么。
我怎样才能做到这一点?
解决方案
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);
}
推荐阅读
- javascript - 流已接收但未在视频元素 html 中显示,仅用于多连接
- docker - Docker 安装 - 启用虚拟化的问题
- javascript - Firebase Firestore where() 查询找不到文档
- spring - 异常处理程序MethodArgumentResolversHolder
- stackblitz - Stackblitz - 向角度生成器添加选项?
- python - 从定义的视图调用时,Django HttpResponseRedirect 的保留命名空间问题
- sql - Oracle 获取记录,其中字符串不作为子字符串出现在其他行中?
- javascript - 反应选择 onChange 不改变所选值
- sql - 空格/空格的合并功能
- c# - http 413 请求实体太大错误修复