2013-12-24 54 views
1

而我試圖通過使用解析方法int.parse(DataValueField)作爲它的值應該來自它給我這個數據庫的數據庫時,我的下拉列表中的DataValueField作爲輸入詮釋參數在方法中使用運行時錯誤DataValueField沒有檢索值,雖然DataTextField檢索

輸入字符串的不正確的格式

所以我調試的網站,看看哪些是我發現,它並沒有檢索到它的價值INT及其SelectedIndexChanged方法的問題,雖然下拉列表填入Page_Load方法
這裏是Page_Load方法

protected void Page_Load(object sender, EventArgs e) 
{ 
writerddl.DataSource = DS.show_all_writers(); 
writerddl.DataValueField = "writerid"; 
writerddl.DataTextField = "writersname:; 
writerddl.DataBind(); } 

,這是的SelectedIndexChanged方法:

protected void writerddl_SelectedIndexChanged(object sender, EventArgs e) 
{ 
writer _writer = DS.select_writer_by_id(int.Parse(writerddl.DataValueField)).Single(); 
usernametxt.Text = _writer.username; 
passwordtxt.Text = _writer.password; 
nametxt.Text = _writer.writersname; 
} 

注意我使用LinQtoSql,因此DS。 「方法」()是一個存儲過程

+0

使用'writerddl.SelectedValue'代替 – Grundy

+0

嗯... se EMS我已經在使用它! look writer _writer = DS.select_writer_by_id(int.Parse(** writerddl.DataValueField **))。Single(); –

+0

但我會嘗試這個好嗎 –

回答

1

在MSDN DataValueField

使用這個屬性來指定一個包含每個項目的列表控件的值字段。

所以它的簡單屬性名稱,而不是值。爲了得到選擇的值,你需要使用

  1. SelectedValue
  2. SelectedItem
+0

啊哈現在我看到問題在哪裏,好嗎 –

1

替換此:

writer _writer = DS.select_writer_by_id(int.Parse(writerddl.DataValueField)).Single(); 

有:

int i = int.Parse(writerddl.SelectedItem.Value); 
writer _writer = DS.select_writer_by_id(i).Single(); 
+0

'writerddl.DataValueField'是字符串''writerid「'所以'int.Parse'總是產生異常 – Grundy

+0

SelectedItem。值 –

+0

因此,可能你會更新你的答案? :-) – Grundy

1

要選擇從下拉列表中選擇的值,你應該使用writerddl.SelectedValue而不是關閉writerddl.DataValueField

感謝 Parvati