비즈니스 클래스에이 코드가 있습니다.DropDownList를 ListItemCollection에 바인딩하고 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;
}
나는 문제없이 dao에서 테이블을 되 찾는다. 나는 텍스트를보고 (굉장한 illiteration에 대한 +1을?) 속성이 제대로 채울 값과 프리젠 테이션으로 돌아 내가 선택한 값을
this.ddlAgent.SelectedValue
I를 얻을 할 때 나는이
Helper helper = new Helper();
ListItemCollection agentList = helper.GetAllAgents();
agentList.Insert(0,"");
this.ddlAgent.DataSource = agentList;
this.ddlAgent.DataBind();
처럼 바인딩 에이전트 ID를 볼 수 있지만 텍스트 (에이전트 이름)를 얻으려고 했으므로 이것을 시도했습니다.
this.ddlAgent.SelectedItem.Value
그러나 동일한 결과가 나타납니다. 그런 다음 생성되는 html 소스를 살펴 보았습니다.이 모양은 다음과 같습니다.
<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>
이 패턴은 모든 에이전트에서 계속됩니다. 나는 당신이 나의 문제를 해결할 때 나는 단지 뼈를 향한 방향으로 나아갈 것을 기대하고있다. :
고마워.
편집 : 나는이
ListItemCollection agentList = helper.GetAllAgents();
agentList.Insert(0,"");
foreach (ListItem agent in agentList)
{
this.ddlAgent.Items.Add(agent);
}
처럼 할 경우는 그것을 잘 작동합니다. 일을
그 티켓이 ... 나는 왜 이런 식으로 할까? – jim
DropDownList가 텍스트 및 값으로 사용할 필드를 지정해야합니다. 자동으로 수행되는 것처럼 보입니다 (새 ListItem을 작성하는 매개 변수도 값 및 텍스트라고도 함)하지만 명시 적이어야합니다. – Farinha
신비를 제거해 주셔서 감사합니다. – jim