gpt4 book ai didi

c# - 单击按钮时遍历 gridview 行

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:01 25 4
gpt4 key购买 nike

我有一个 gridview,用户可以使用复选框选择项目。在页面底部,我有一个保存按钮,我想循环访问 gridview 行并传递所选行的 LinkID。当我去迭代时,我的 gridview.rows 返回 0 但那里有行......我做错了什么?谢谢

<asp:UpdatePanel ID="upPanResults" runat="server">
<ContentTemplate>
<div id="divResults" style="min-height: 350px;">
<asp:GridView ID="grdInvoice" ClientIDMode="Static" runat="server" CssClass="DG"
Width="100%" DataKeyNames="LinkID" AutoGenerateColumns="False" GridLines="Vertical"
CellPadding="4" AllowPaging="True" AllowCustomPaging="True" PageSize="1000" PagerStyle-Visible="False"
ShowFooter="true" RowStyle-CssClass="Item" AlternatingRowStyle-CssClass="Alternating"
HeaderStyle-CssClass="HomeDGhead" SelectedRowStyle-CssClass="Selected"
OnRowDataBound="grdInvoice_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Address">
<ItemTemplate>
<asp:Label ID="Address" CssClass="norm" runat="server"><%# DataBinder.Eval(Container, "DataItem.Address") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:Label ID="Date" CssClass="norm" runat="server"><%# DataBinder.Eval(Container, "DataItem.Date") %></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total">
<ItemTemplate>
<asp:Label runat="server" ID="LblAmount" CssClass="no_border" Text='<%# DataBinder.Eval(Container, "DataItem.Amount") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="ChkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<table width="98%">
<tr height="25">
<td align="left">
<asp:Label ID="Label1" runat="server" CssClass="head2" Text="Approval Number:" ClientIDMode="Static"></asp:Label>&nbsp;&nbsp;<asp:TextBox
ID="Txt" runat="server" CssClass="norm" ClientIDMode="Static"></asp:TextBox>
</td>
<td align="right">
<asp:Label ID="Label3" runat="server" CssClass="head2" Text="Selected Total:"></asp:Label>
&nbsp;&nbsp;
<asp:Label ID="LblTotal" runat="server" ClientIDMode="Static" CssClass="head2" Text="0"></asp:Label>
</td>
</tr>
<tr height="25">
<td align="center" colspan="2">
<asp:Button ID="BtnSave" runat="server" CssClass="btn"
Text="Save" OnClick="BtnSave_Click" />
&nbsp;&nbsp;<asp:Button ID="btnCancel" runat="server" CssClass="btn" Text="Cancel"
OnClick="btnCancel_Click" />
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>



protected void BtnSave_Click(object sender, EventArgs e)
{
upProgress.Visible = false;
string sLinks = "";
int iLinks = 0;
CheckBox chk;
foreach (GridViewRow row in grdInvoice.Rows)
{
chk = (CheckBox)row.Cells[3].Controls[1];
if (chk.Checked == true)
{
sLinks += grdInvoice.DataKeys[row.RowIndex].Value.ToString() + ",";
iLinks = iLinks + 1;
}

}
}

最佳答案

您可以使用以下方法遍历行以找到被勾选的 CheckBox:

foreach (GridViewRow row in yourGrid.Rows)
{
CheckBox chk = row.Cells[3].Controls[1] as CheckBox;
if ((chk != null) && chk.Checked)
{
int yourID = Convert.ToInt32(yourGrid.DataKeys[row.RowIndex].Value);
// Do something with each row here...
}
}

您确定在保存按钮触发之前没有将回发时的网格重新绑定(bind)到空的 DataSource 吗?检查您的 PageLoad 事件。

我看到您有多个 UpdatePanel 控件。尝试在包含 GridViewUpdatePanel 中设置一个 Trigger 以链接到 Click带有保存按钮的 UpdatePanel。服务器端不再知道绑定(bind)到 GridView 的数据,或者 GridView 数据没有被发回服务器。

关于c# - 单击按钮时遍历 gridview 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com