2013-08-30 71 views
1

在开始的时候,我不得不说,我试图找到答案......是的,我在ASP.Net世界:)新ASP.Net的DropDownList选择的值丢失

我想用的DropDownList在GridView的EditItemTemplate字段中。我发现我无法设置参数选定值。它不见了。当我尝试在后面的代码中设置它似乎ddlEditPermissions不存在。

<asp:TemplateField HeaderText="opravneni" SortExpression="opravneni"> 
<edititemtemplate> 
    <asp:DropDownList ID="ddlEditPermissions" runat="server" DataSource='<%# getPermissions() %>' OnPreRender="ddlEditPermissions_PreRender"/> 
</edititemtemplate> 
<insertitemtemplate> 
    <asp:TextBox ID="tbEditPermissions" runat="server" Text='<%# Bind("opravneni") %>'></asp:TextBox> 
</insertitemtemplate> 
<itemtemplate> 
    <asp:Label ID="lEditPermissions" runat="server" Text='<%# Bind("opravneni") %>'></asp:Label> 
</itemtemplate> 

我真的很困惑。任何人都可以提醒我吗?

回答

1

你可以用它构建和数据绑定之后被触发,每GridViewRowGridViewRowDataBound

protected void gridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Edit) 
    { 
     var ddlEditPermissions = (DropDownList)e.Row.FindControl("ddlEditPermissions"); 
     // bind DropDown manually 
     ddlEditPermissions.DataSource = getPermissions(); 
     ddlEditPermissions.DataTextField = "Permission_Name"; // presumed text-column 
     ddlEditPermissions.DataValueField = "Permission_ID"; // presumed id-column 
     ddlEditPermissions.DataBind(); 

     DataRowView dr = e.Row.DataItem as DataRowView; // you might need to change this type, use the debugger then to determine it 
     ddlEditPermissions.SelectedValue = dr["Permission_ID"].ToString(); // presumed foreign-key-column 
    } 
} 
+0

它的工作原理,但确认编辑后,它会抛出异常:'不能将NULL值插入列' OPRAVNENI_ID',表'HelpDeskDB.dbo.USERS';列不允许有空值。更新失败。 该声明已被终止。 ' - 我怎样才能绑定该列值? –

+0

@Jenda:这似乎是一个不同的问题,因为它是关于更新声明而不是此问题中的数据绑定问题。所以你应该问另一个问题,并显示相关的代码(包括SQL和数据库模式)。 –

+0

好的......谢谢,我会再提一个问题;) –

相关问题