2015-06-26 43 views
0

我有一個表格可以查看和更新​​記錄。數據正在從存儲過程中填充。除了我的下拉列表外,一切都可以正常使用。這背後是我的代碼:顯示下拉列表中的選定值

using (SqlDataReader sdr = cmd.ExecuteReader()) 
{ 
    while (sdr.Read()) 
    { 
     EmployeeIdTextBox.Text = sdr["EmployeeID"].ToString(); 
     EmployeeNameTextBox.Text = sdr["EmployeeName"].ToString(); 
     DepartmentDropDown.DataTextField = sdr["Department"].ToString(); 
     DepartmentDropDown.DataValueField = sdr["Department"].ToString(); 
     DepartmentDropDown.DataBind(); 
    } 
} 

這是我的aspx:

<div> 
    EmployeeID: 
    <asp:TextBox ID="EmployeeIdTextBox" runat="server" CssClass="textBoxWidth" ReadOnly="True"></asp:TextBox> 
</div> 
<div> 
    EmployeeName: 
    <asp:TextBox ID="EmployeeNameTextBox" runat="server" CssClass="textBoxWidth" ReadOnly="True"></asp:TextBox> 
</div> 
<div> 
    Department: 
    <asp:DropDownList ID="DepartmentDropDown" runat="server" CssClass="textBoxWidth"></asp:DropDownList> 
</div> 

我可以,但是,得到的值在下拉列表中,如果我改變我的aspx像下面,但我更因爲我有幾個比下面顯示的字段更喜歡在後端執行此操作。

<asp:DropDownList ID="DepartmentDropDown" runat="server" CssClass="textBoxWidth" 
    DataSourceID="SqlDS1" DataTextField="Department" 
    DataValueField="Department" AutoPostBack="True"> 
</asp:DropDownList> 

<asp:SqlDataSource ID="SqlDS1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT DISTINCT Department FROM Employees"> 
</asp:SqlDataSource> 

我能做到這一切在一個步驟就像我試圖做,或做我需要做這兩個步驟?我的問題的後半部分是我還需要擁有與用戶相對應的項目,默認情況下會在下拉列表中選中。第二種方法填充下拉列表,儘管沒有被選中,因爲它是一個單獨的查詢,所以與我在表單中查看的用戶數據沒有關聯。

+0

你必須在後面的嘗試你的代碼返回從數據庫 –

+1

多個結果集:''DepartmentDropDown .SelectedText = sdr [「Department」]。ToString()'',你需要在第二種方式設置下拉列表中的選定項時,數據綁定在後面的代碼下拉 –

+0

@EhsanSajjad錯誤與您的建議。下拉菜單不包含SelectedText的定義。我有trid使用SelectedItem.Text,但我得到一個錯誤「對象引用未設置爲對象的實例。」除了我在第一個例子中的位置之外,我沒有看到數據綁定的位置,這是我在第二個例子中完成的,但沒有運氣。 – aantiix

回答

0

明白了。解決方案是下面貼的參考...

後面的代碼:

using (SqlDataReader sdr = cmd.ExecuteReader()) 
{ 
    while (sdr.Read()) 
    { 
     EmployeeIdTextBox.Text = sdr["EmployeeID"].ToString(); 
     EmployeeNameTextBox.Text = sdr["EmployeeName"].ToString(); 
     DepartmentDropDown.DataBind(); 
     DepartmentDropDown.Items.FindByValue(sdr["Department"].ToString()).Selected = true; 
    } 
} 

ASPX:

<asp:DropDownList ID="DepartmentDropDown" runat="server" CssClass="textBoxWidth" 
    DataSourceID="SqlDS1" DataTextField="Department" 
    DataValueField="Department" AutoPostBack="True"> 
</asp:DropDownList> 

<asp:SqlDataSource ID="SqlDS1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT DISTINCT Department FROM Employees"> 
</asp:SqlDataSource> 
相關問題