我有一个 ASP.Net 应用程序,我需要向用户展示一个项目列表,并在每个项目旁边证明一个下拉列表,每个下拉列表有 4 个选项。下拉菜单允许用户选择所选人员可以查看的项目。选项包括:无访问权限、只读权限、受限访问权限和完全访问权限。
所以,我在想一个表,有 2 列:项目名称和访问级别。
最后,一个保存按钮。
然后我需要返回所有项目(Ids?)以及所有下拉列表的选定值,可能是一个数组?然后在后面的代码中,我将创建一个 List<> 并将其传递给框架代码以存储在数据库中。
但是,我不确定如何呈现表格,以便我可以以某种方式获取项目,链接到下拉列表,并将其转换为我可以用来保存数据的东西。保存按钮需要为用户保存所有项目的访问级别。我怎样才能在 ASP.Net 中做到这一点?
为了渲染屏幕,我打算List<ProjectSecurity>
从数据库中获取一个,其中 ProjectSecurity 是一个 DTO:
ProjectId
ProjectName
UserId
SecurityLevelId
其中 SecurityLevelId 为只读、无访问权限等。
然后我会遍历列表,并创建一个表,但是每行需要一个隐藏字段来表示 projectId 吗?
然后以某种方式将其恢复为保存?
我很乐意使用网格,但是使用下拉框进行内联编辑的网格似乎很难实现,还有 SaveAll 按钮。单行编辑似乎更容易。
根据下面提供的想法,我在当前拥有的网格中“硬编码”了一个虚拟列,并且可以下拉。但是,不确定如何填充 List<> 我可以从我的表中获取的下拉列表中的项目,以及如何根据当前行的选定值设置选定值:
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="AccountManager" HeaderText="AccountManager" />
<asp:BoundField DataField="ProjectCode" HeaderText="ProjectCode" />
<asp:BoundField DataField="DurationText" HeaderText="DurationText" />
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList runat="server" AutoPostBack="True">
<asp:ListItem
Enabled="True"
Text="Test"
Value="Test" />
<asp:ListItem
Enabled="True"
Text="Test 2"
Value="Tes 2" />
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>