【问题标题】:Fetch database table rows as asp.net gridview headers获取数据库表行作为 asp.net gridview 标题
【发布时间】: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


【解决方案1】:

您需要根据学生选择的科目数量动态创建文本框的数量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多