我对DetailsView有疑问。我需要使用DropDownList来更新数据库中的值。这些值我在不同的表中。我使用 ObjectDataSource 并且它工作正常。我的问题是当我无法在设计器中绑定SelectedValue时如何使用 DropDownList,因为它丢失了。我发现了很多建议,例如
<asp:DropDownList ID="ddlEditPermissions" runat="server" DataSource='<%#getPermissions() %>' SelectedValue='<%# Bind("PermissionID") %>'/>
但正如我写的那样,设计器中不允许 SelectedValue 属性。我正在寻找另一种方法SelectedValue='<%# Bind("PermissionID") %>'因为我想使用 DropDownList SelectedValue 属性作为 ObjectDataSource UpdateMethod 的参数。
我的更新方法:
public static void UpdateUser(int UserId, string UserName, int PermissionID)
{
using (DC_databazeDataContext db = new DC_databazeDataContext())
{
if (!db.DatabaseExists())
throw new Exception("Databáze neexistuje nebo se k ní nedá připojit!");
var users = db.USERs.Where(u => u.USER_ID == UserId);
if (users.Count() == 0) return;
USER aktU = users.First();
aktU.USER_NAME_A = UserName;
aktU.OPRAVNENI_ID = PermissionID;
db.SubmitChanges();
}
}
这是我的详细信息:
<asp:DetailsView ID="DetailsView2" runat="server" AutoGenerateRows="False" DataSourceID="ODS_UzivatelDetail" DataKeyNames="UserId">
<Fields>
<asp:BoundField DataField="UserId" HeaderText="UserId" SortExpression="UserId" ReadOnly="true" />
<asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
<asp:TemplateField HeaderText="PermissionID" SortExpression="PermissionID">
<EditItemTemplate>
<asp:DropDownList ID="ddlEditPermissions" runat="server" DataSource='<%# getPermissions() %>'/>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lPermissions" runat="server" Text='<%# Bind("PermissionID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Fields>
</asp:DetailsView>
数据库表:
用户
- USER_ID -整数
- PERMISSION_ID -整数
- USER_NAME_A - nvarchar(20)
权限
- PERMISSION_ID -整数
- PERMISSION_NAME_A - nvarchar(20)
我正在使用 VS2012 .Net Framework 4.5 ... 那么有人可以帮助我吗?