Tôi có mã này trong một lớp học kinh doanh.Ràng buộc DropDownList vào ListItemCollection và Giá trị không được thêm vào DDL
internal ListItemCollection GetAllAgents()
{
DataTable table = dao.GetAllAgents();
ListItemCollection list = new ListItemCollection();
foreach (DataRow row in table.Rows)
{
list.Add(new ListItem(row["agent_name"].ToString(), row["id"].ToString()));
}
return list;
}
Tôi lấy lại bàn từ dao mà không gặp vấn đề gì. Tôi xem văn bản và đánh giá cao tính chất cư đúng cách (+1 cho một số illiteration tuyệt vời?) Và trở về trình bày và tôi ràng buộc như thế này
Helper helper = new Helper();
ListItemCollection agentList = helper.GetAllAgents();
agentList.Insert(0,"");
this.ddlAgent.DataSource = agentList;
this.ddlAgent.DataBind();
khi tôi thực hiện được giá trị chọn
this.ddlAgent.SelectedValue
tôi hy vọng sẽ thấy id tác nhân, nhưng nội dung tôi nhận được là văn bản (tên tác nhân), vì vậy tôi đã thử điều này
this.ddlAgent.SelectedItem.Value
nhưng tôi có cùng kết quả. Sau đó, tôi đã xem xét nguồn html đang được tạo và có vẻ như đây là
<select name="ctl00$ContentPlaceHolder1$ddlAgent" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$ddlAgent\',\'\')', 0)" id="ctl00_ContentPlaceHolder1_ddlAgent">
<option selected="selected" value=""></option>
<option value="agent1_name">agent1_name</option>
<option value="agent2_name">agent2_name</option>
mẫu này tiếp tục cho tất cả các tác nhân. Tôi hy vọng tôi chỉ làm một cái gì đó xương đầu và bạn có thể tất cả snicker khi bạn giải quyết vấn đề của tôi :)
Cảm ơn các bạn.
EDIT: nếu tôi làm điều đó như thế này
ListItemCollection agentList = helper.GetAllAgents();
agentList.Insert(0,"");
foreach (ListItem agent in agentList)
{
this.ddlAgent.Items.Add(agent);
}
nó hoạt động tốt.
đó là vé ... Tôi tự hỏi tại sao họ lại làm theo cách này? – jim
Bạn cần chỉ định trường nào DropDownList sử dụng làm văn bản và giá trị. Nó trông giống như nó sẽ được thực hiện tự động (với các tham số để tạo ra một ListItem mới cũng được gọi là giá trị và văn bản) nhưng nó phải được rõ ràng. – Farinha
cảm ơn bạn đã xóa bí ẩn – jim