這個問題解決了,請參閱下面的帖子我的評論ASP.NET DropDownList.SelectedValue丟失我nPostBack
我有我的代碼的問題是puzzeling我: 我有一個ASP.NET的DropDownList(簡單,不在gridview或者...),這是靜態數據綁定到數據庫查詢。另外,我在標記添加一個列表項:
<asp:DropDownList ID="ddDeviceSelector" runat="server" DataSourceID="CryringDB_InventoryAssets" DataTextField="Identifier" DataValueField="RowID" AutoPostBack="True" OnTextChanged="ddDeviceSelector_IndexChanged" ToolTip="Select a device by name" AppendDataBoundItems="True" Width="300px">
<asp:ListItem>-- Select Device OR Enter Data of New Device --</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="CryringDB_InventoryAssets" runat="server" connectionString="<%$ ConnectionStrings:CMSValuesExplicitUser %>" SelectCommand="SELECT valueColumn, textColumns FROM myTable"></asp:SqlDataSource>
我可以用一個URL查詢參數調用頁面?「擺脫= ...」,其中包含去掉一個特定項目的列表中的價值。當我嘗試解析rid並按值選擇列表中的項目時,DropDownList.SelectedValue不會被設置。 代碼的Page_Load的:
protected void Page_Load(object sender, EventArgs e)
{
// Code to interpret the parameter rid (RowID) in the URL
// provides functionality to open formAssetDetails of an individual object.
if (!IsPostBack)
{
ddDeviceSelector.DataBind();
setUiPropertiesByMode(classConstants.displayMode);
String rowID = null;
rowID = Request.QueryString["rid"];
if (rowID != null)
{
setUiPropertiesByMode(classConstants.editMode);
ddDeviceSelector.Enabled = true;
ddDeviceSelector.Enabled = true;
ddDeviceSelector.SelectedValue = rowID;
}
}
該代碼的執行沒有問題,但我在調試器看到錯誤信息(行之後斷點 「ddDeviceSelector.SelectedValue = ROWID;」)
錯誤CS0103:該名「的SelectedValue」不會在目前情況下
存在(此消息來自德國的翻譯並可能在英語中是悅目不同)
任何幫助表示讚賞。
問題解決方案: 在我用來調用上面的頁面/代碼的URL中,參數rid是作爲UPPERCASE字符串(數據庫級別的唯一標識符)傳輸的。在運行時,DropDown的項目是小寫的,所以SelectedValue(區分大小寫)不匹配。代碼更改爲: if(rowID!= null) { rowID = rowID.ToLower(); ddDeviceSelector.Enabled = true; ddDeviceSelector.SelectedValue = rowID; setAssetValuesByRowID(rowID); } – WolfiG