asp.net中,gridview绑定的选择框checkbox,多选后获取选中的id,点击button按钮,跳转到下一个页面的Girdview中
时间: 2024-02-17 12:00:40 浏览: 102
在ASP.NET中,GridView的选择框可以通过添加TemplateField来实现。在模板列中添加一个Checkbox控件,然后在后台代码中获取选中的行并传递到下一个页面。以下是示例代码:
1. 在GridView中添加模板列,并添加一个Checkbox控件:
```
<asp:GridView ID="gvData" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" onclick="checkAll(this);" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Id" HeaderText="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" />
</Columns>
</asp:GridView>
```
2. 在后台代码中获取选中的行,并将选中的ID传递到下一个页面:
```
protected void btnNext_Click(object sender, EventArgs e)
{
List<int> selectedIds = new List<int>();
foreach (GridViewRow row in gvData.Rows)
{
CheckBox chkSelect = row.FindControl("chkSelect") as CheckBox;
if (chkSelect != null && chkSelect.Checked)
{
int id = (int)gvData.DataKeys[row.RowIndex].Value;
selectedIds.Add(id);
}
}
if (selectedIds.Count > 0)
{
string url = "NextPage.aspx?ids=" + string.Join(",", selectedIds);
Response.Redirect(url);
}
}
```
3. 在下一个页面中获取传递过来的选中的ID,并查询数据并绑定到GridView中:
```
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string ids = Request.QueryString["ids"];
if (!string.IsNullOrEmpty(ids))
{
int[] idArray = ids.Split(',').Select(int.Parse).ToArray();
BindGridView(idArray);
}
}
}
private void BindGridView(int[] selectedIds)
{
// 查询数据
DataTable dt = // 查询数据
// 过滤数据
DataView dv = dt.DefaultView;
dv.RowFilter = "id IN (" + string.Join(",", selectedIds) + ")";
// 绑定数据到GridView中
gvData.DataSource = dv;
gvData.DataBind();
}
```
以上代码仅供参考,具体实现需要根据实际情况进行调整。
阅读全文