我有一個gridview,用戶可以用複選框選擇項目。在頁面的底部,我有一個保存按鈕,我想遍歷gridview行並傳遞選定的行LinkID。當我去迭代雖然,我的gridview.rows返回0,但有行在那裏......我做錯了什麼?由於遍歷按鈕上的gridview行點擊
<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> <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>
<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" />
<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;
}
}
}
你可以發佈代碼綁定你的網格嗎? – Kelsey
protected void BindData(int iClient) { DataContext dc = new DataContext(ConfigurationManager.ConnectionStrings [「DB」]。ConnectionString); var qry = from dc.usp_list_client_invoice_details(iClient)中的c select c; grdInvoice.DataSource = qry.ToList(); grdInvoice.DataBind(); } – user1801525
是否在頁面或網格的父控件中禁用了'ViewState'? – Kelsey