【问题标题】:How to save list of team members in asp.net to sql server database table?如何将asp.net中的团队成员列表保存到sql server数据库表中?
【发布时间】:2015-03-02 05:39:20
【问题描述】:

我正在 asp.net 中设计一个跟进报告表,供员工在其中输入数据并将数据保存到数据库表中。表格如下,

我知道将数据保存到团队成员,因为它们是一个选择或文本框值,但我不知道如何处理团队成员。一个团队最多可以有 16 名成员。我该如何将它保存在数据库中?我是否应该创建 16 个不同的 varchar 字段,例如 teammember1、teammember2、... teammember16,但这太多了。该团队成员值使用哪个 asp.net 控件?我应该为团队中的每个成员使用单独的文本框吗?我真的很困惑如何处理上述表格中的团队成员。谁能帮助我,让我知道如何正确地做到这一点。

【问题讨论】:

  • 你问的是如何设计表格结构或如何设计UI?
  • 我都在问。可以举个例子吗?
  • 设计数据库以维护1:mm:1 关系并避免m:m 关系。对于 UI,如果您的播放器列表是固定的,那么您可以使用带有自动完成功能的 chekbosex 或下拉列表或文本框。我无法编写完整的代码。尝试这样做,如果出现问题,请返回这里。
  • 好的,让我看看我能做什么

标签: asp.net sql-server vb.net forms webforms


【解决方案1】:

第一个问题:我们如何将团队成员的值保存到数据库中

您可以使用不同的方式。

一种方法可以将所有值保存在单个字段中,以逗号形式 分开的。检索的时间可以分开。

另一种方法:使用单独的表并每行存储一个值, 外键指向您的表。

注意:第一种方法不好,我更喜欢第二种方法

第二个问题:这里适合哪种asp控件:

我觉得这里用Textbox比较好。

注意:第一次不要显示 16 个文本框。只显示 1 个文本框,完成第一个文本框值后,它将动态创建并显示另一个文本框,依此类推。直到达到限制。

或者您可以使用 jquery 弹出窗口来获取团队的价值 玩家。我认为它看起来会更聪明

【讨论】:

  • 不建议使用逗号分隔值存储在数据库中。如果他以后想查询每个成员的数据怎么办?
  • @CoderofCode 我同意你的看法。我只是说这是一种方法,而且我的答案中也包含了另一种方法
  • @ArunprasanthKV OP 是新手,你不应该给出不好的方法,如果你给他至少尝试添加解释为什么它可能是任何人在数据库设计中可能犯的最严重错误。
  • @CoderofCode 以逗号分隔保存数据是一种不好的做法,我同意这一点。但我认为将来可以查询每个成员吗?我对吗 ?如果我错了,请纠正我
  • 是的,这是可能的,但这会导致更复杂的查询和数据库设计。为什么一开始就犯错。
【解决方案2】:

“我真的很困惑如何处理上述表格中的团队成员。”

您可以执行以下操作

对于网络表单:

使用gridview 控件。在template fields 之一中添加textbox 控件。您也可以添加editdelete template fields 以防需要修改数据。

<asp:GridView ID="gvMembers" runat="server" AutoGenerateColumns="False" ForeColor="#333333"
    ShowFooter="True" Width="212px" OnRowDeleting="gvMembers_RowDeleting">
    <Columns>
        <asp:TemplateField HeaderText="Team Member">
            <ItemTemplate>
                <asp:TextBox ID="txtMember" runat="server"></asp:TextBox>
            </ItemTemplate>
            <FooterTemplate>
                <asp:Button ID="btnAddMore" runat="server" Text="Add More" onclick="btnAddMore_Click"/>
            </FooterTemplate>
        </asp:TemplateField>
        <asp:ButtonField HeaderText="Delete" Text="Delete" />
    </Columns>
    <HeaderStyle BackColor="#102040" Font-Bold="True" ForeColor="White" />
</asp:GridView>

您可以在网上找到有关如何使 gridview 动态化的代码。 休息时,您可以使用您发布的图片中显示的常用控件。

用于数据库 创建两个数据库表。 一份用于后续报告(不包含团队成员)

create table follow_up_performance_report
(
    report_id int primary key identity,
    report_type nvarchar (20),
    section nvarchar(30),
    leader nvarchar(30),
    head_leader nvarchar(30),
    time_to nvarchar(50)
)

下一个仅供团队成员使用。

create table report_team_members
(
    report_member_id int primary key identity,
    report_id int constraint fk_rep_id foreign key references follow_up_performance_report(report_id),
    team_member  nvarchar(30)
)

保存网络表单时,首先将其插入follow_up_performance_report 并创建一个方法来调用表的last report_id,然后将其余(团队成员)插入表report_team_members

希望这对你有用。

【讨论】:

    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多