2013-08-30 68 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

好的......謝謝,我會再提一個問題;) –

相關問題