【发布时间】:2018-09-03 16:10:08
【问题描述】:
我的 SQL Server 数据库中有两张表(一张用于添加科目,另一张用于添加基于班级在这些科目中获得的分数)。我想像 excel 条目一样输入标记,所以我在 gridview 的第一列中获取学生姓名并在 gridview 的其他列中填充文本框以输入标记,如下所示:
现在的问题是,如果 10 班的学生 'A' 选择了 4 个科目,而 5 班的学生 'B' 选择了 5 个科目,我该如何实现分数输入模块,说学生 'A' 只得到gridview 和学生“B”中的 4 个文本框和主题列仅获得 5 个文本框。
这是我的 Aspx 标记:
<asp:GridView ID="grdMarksEntry" GridLines="None" runat="server"
AutoGenerateColumns="false"
CssClass="table table-hover table-responsive table-bordered" ShowFooter="true">
<Columns>
<asp:TemplateField HeaderText="Sl. No.">
<ItemTemplate>
<%#Container.DataItemIndex + 1 %>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="name" HeaderText="Name of the student" />
<asp:TemplateField HeaderText="Subject 1">
<ItemTemplate>
<asp:TextBox ID="txtSub1" runat="server" CssClass="form-control"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Subject 2">
<ItemTemplate>
<asp:TextBox ID="txtSub2" runat="server" CssClass="form-control"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Subject 3">
<ItemTemplate>
<asp:TextBox ID="txtSub3" runat="server" CssClass="form-control"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Subject 4">
<ItemTemplate>
<asp:TextBox ID="txtSub4" runat="server" CssClass="form-control"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Subject 5">
<ItemTemplate>
<asp:TextBox ID="txtSub5" runat="server" CssClass="form-control"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Subject 6">
<ItemTemplate>
<asp:TextBox ID="txtSub6" runat="server" CssClass="form-control"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后面还有我的 c# 代码:
private void bindgrd()
{
string constr = ConfigurationManager.ConnectionStrings["DatabaseConnect"].ConnectionString;
using (SqlConnection StudMarksCon = new SqlConnection(constr))
{
using (SqlCommand StudMarksCmd = new SqlCommand("select distinct name from studentregistration where class='" + drpClass.SelectedItem.ToString() + "' and div='" + drpDiv.SelectedItem.ToString() + "'"))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
StudMarksCmd.Connection = StudMarksCon;
sda.SelectCommand = StudMarksCmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
grdMarksEntry.DataSource = dt;
grdMarksEntry.DataBind();
}
}
}
}
【问题讨论】:
-
您可以为所有可能的科目创建一个列,并为不在该科目中的学生留空值,或者您更改您的设计。一种常见的模式是主/详细信息,您可以从一个网格中选择一个学生,并将该特定学生的数据加载到下面的另一个部分或另一个页面上。
-
是的,我可以这样做,但是如果我添加新科目并将其分配给新班级,那么这将不起作用!
标签: c# html asp.net sql-server gridview