iT邦幫忙

0

ASP.NET未將物件參考設定為物件的執行個體問題

各位大大請教:
我在xxx.aspx頁面下拉了1個dropdownlist控制項
然後在xxx.aspx.cs下給定dropdownlist的值如下:
protected void Page_Load(object sender, EventArgs e)
{
listItem = new ListItem("A", "A");
ddl_list1.Items.Add(listItem);
listItem = new ListItem("B", "B");
ddl_list1.Items.Add(listItem);
}
再建一個button按下後想要取得dropdownlist的值
protected void btn_test_Click(object sender, EventArgs e)
{
ddl_list1.SelectedItem;
}
就出現未將物件參考設定為物件的執行個體問題的錯誤了~
網路找的一些狀況跟我的狀況不太一樣~
不知道各位大大知道如何在xxx.aspx.cs下動態的設定dropdownlist的值,並且取出它的值嗎?
我有試著去找控制項物件,是可以找到的控制項的,不過取出來的值是"空",如下:
DropDownList ddl = (DropDownList)Master.FindControl("ContentPlaceHolder1").FindControl("ddl_list1");
if (ddl != null)
{
ll_test.Text += "not null";
ll_test.Text += "~" + Convert.ToString(ddl.SelectedItem);
}
else
{
ll_test.Text += "null";
}
如果dropdownlist是在xxx.aspx下先設定好,手動設定或用SqlDataSource1來Bind,之後取值的語法都是沒問題的。
不知道我這樣手動設定的語法問題出在那裡,謝謝各位指教了

1 個回答

6
外獅佬
iT邦大師 1 級 ‧ 2014-01-12 01:22:50
最佳解答

leo226提到:
protected void Page_Load(object sender, EventArgs e)
{
listItem = new ListItem("A", "A");
ddl_list1.Items.Add(listItem);
listItem = new List...(恕刪)

請改為

<pre class="c" name="code">
protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
    listItem = new ListItem("A", "A");
    ddl_list1.Items.Add(listItem);
    listItem = new ListItem("B", "B");
    ddl_list1.Items.Add(listItem);
  }
}

每次PostBack...你的DropDownList的SelectedItem都被重設了...

外獅佬 iT邦大師 1 級 ‧ 2014-01-12 01:25:21 檢舉

請去MSDN深入了解一下Page的Life Cycle....
ASP.NET Life Cycle

這是Web....不是Windows Application...

賽門 iT邦超人 1 級 ‧ 2014-01-12 10:20:30 檢舉

正解,很多從Winform轉到Webform的程式設計人員都會犯相同的失誤。

我也犯過一樣的錯誤失神
我是來認錯的毆飛

我要發表回答

立即登入回答