C# 选中作为模板字段添加的复选框时,如何从gridview控件中的行检索相应的数据
我是ASP.NET的初学者,不是代码天才。我希望有人能帮忙 因此,我创建了一个web表单,并向其中添加了一个gridview控件。gridview包含两列:名称\主题名称,选择主题包含复选框的模板列 最后,我想让一个学生使用这个网络表单来注册他的科目。 因此,每当他单击提交按钮时,他将使用复选框注册他选择的所有主题 我想我可以通过添加一个按钮来测试这一点,该按钮将在web表单上打印我选择的主题的名称 这是GridView的HTML和CSS代码C# 选中作为模板字段添加的复选框时,如何从gridview控件中的行检索相应的数据,c#,asp.net,gridview,checkbox,C#,Asp.net,Gridview,Checkbox,我是ASP.NET的初学者,不是代码天才。我希望有人能帮忙 因此,我创建了一个web表单,并向其中添加了一个gridview控件。gridview包含两列:名称\主题名称,选择主题包含复选框的模板列 最后,我想让一个学生使用这个网络表单来注册他的科目。 因此,每当他单击提交按钮时,他将使用复选框注册他选择的所有主题 我想我可以通过添加一个按钮来测试这一点,该按钮将在web表单上打印我选择的主题的名称 这是GridView的HTML和CSS代码 <asp:GridView ID="dgvUs
<asp:GridView ID="dgvUsers" runat="server"
CssClass="table table-hover table-striped" GridLines="None"
AutoGenerateColumns="False" DataSourceID="source1" >
<Columns>
<asp:BoundField DataField="Name_EN" HeaderText="Name_EN" SortExpression="Name_EN" />
<asp:TemplateField HeaderText="Select Subjects">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Text='<%# Eval("Name_EN", "{0}") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<SelectedRowStyle BackColor="#CC3333" Font-Bold="True" ForeColor="White" />
<RowStyle CssClass="cursor-pointer" />
</asp:GridView>
<asp:SqlDataSource ID="source1" runat="server" ConnectionString="<%$ ConnectionStrings:BIS1ConnectionString %>" SelectCommand="spViewAvailableSubjects" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter Name="ID" SessionField="ID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
然后,我需要查看“名称”列中的所有选定数据,但仅限于我单击此按钮时选中复选框的行:
<asp:Button ID="ViewButton" runat="server" CssClass="btn btn-primary" Text="View Selected Subjects" OnClick="ViewButton_Click"/>
我正在考虑使用响应打印数据;方法
但我仍然是ASP.NET的初学者,我不知道如何在代码中实现它,也不知道如何将复选框与其对应行中的数据连接起来
我只想检索数据并打印它们
有人能帮我吗
家
选择讲师
选择时间
注销
这些是可供您注册的主题
要遍历gridview,请执行以下操作:
protected void ViewButton_Click(object sender, EventArgs e) {
List<string> selectedSubjects = new List <string> ();
foreach(GridViewRow gvr in dgvUsers.Rows) {
CheckBox chk = (CheckBox) gvr.Cells[1].FindControl("CheckBox1");
if (chk.Checked) {
selectedSubjects.Add(chk.Text);
}
}
if (selectedSubjects.Count > 0) {
gvSelected.DataSource = selectedSubjects;
gvSelected.DataBind();
}
}
要向用户显示消息,请向表单中添加另一个gridview:
<asp:GridView ID="gvSelected" runat="server">
</asp:GridView>
显然,尽可能地美化它
我个人不建议使用回复;它们的全部目的是将控件绑定到代码隐藏,而不是模仿经典的asp。我尝试了您的解决方案,但不幸的是,在单击按钮后,第二个GridView没有出现。我真的不知道是什么原因造成的。你选择了任何复选框吗?若在按钮单击函数上放置断点并单步执行,会发生什么情况?您是否将任何项目添加到列表中?是的,我选中了所有复选框。但奇怪的是,当我调试ViewButton代码时,当迭代foreach循环时,它向我显示复选框没有被选中。请注意,我重复了很多次这个过程,我向您保证,我选中了复选框。您是否可以重新发布您的ASPX源代码,以及ViewButton单击此处的事件源代码。我将尝试模拟错误。您有带有该错误的母版页吗?这可能是个问题。