我遇到 DetailsView 的问题。我需要在数据库中使用 DropDownList 来获取更新值。我在不同的表中得到了这些值。我使用ObjectDataSource,它可以正常工作。我的问题是当我无法在设计器中绑定 SelectedValue 时如何使用DropDownList,因为它丢失了。我找到了很多像
这样的建议<asp:DropDownList ID="ddlEditPermissions" runat="server" DataSource='<%#getPermissions() %>' SelectedValue='<%# Bind("PermissionID") %>'/>
但是我在设计器中不允许使用SelectedValue属性。我正在寻找 SelectedValue ='&lt;%#Bind(“PermissionID”)%&gt;'的另一种方式,因为我想使用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();
}
}
这是我的DetailsVeiw:
<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>
数据库表:
用户
权限
我正在使用VS2012 .Net Framework 4.5 ... 那么有人可以帮助我吗?
答案 0 :(得分:0)
这是您可以选择DropdownList值的方法:
if (ddlList.Items.FindByValue(<string type value you want to select from dropdownlist>) != null)
{
cboRegion.SelectedValue = ""; //Value you want to select if you are using Value attribute to select
}
假设你想从下拉列表中选择“印度”,那么它将是:
if (ddlList.Items.FindByValue("India") != null)
{
cboRegion.SelectedValue = "India";
}
或
string strValue = ddlList.Items.FindByValue("India").ToString();
if (strValue != null)
{
cboRegion.SelectedValue = strValue ;
}
您可以使用FindByValue
或FindByText
方法从DropdownList中查找值,如下所示:
if (ddlList.Items.FindByText(<string type value you want to select from dropdownlist>) != null)
{
cboRegion.SelectedText = ""; //Value you want to select if you are using Value attribute to select
}
答案 1 :(得分:0)
解决了......真的很简单。谢谢你的时间;)
我将密钥添加到DetailView中的ItemUpdating事件中的键中。
protected void dtlvUserDetail_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
DropDownList ddlEditPermissions= (DropDownList)dtlvUzivatel.FindControl("ddlEditPermissions");
e.Keys["permission"] = ddlEditPermissions.SelectedValue;
}