2013-03-20 2 views
3

열의 값을 사용하여 드롭 다운을 채우려고합니다. 문제는 다음과 같습니다. 드롭 다운에 실제 값 (인도 (+61)과 같은 국가 코드)이 표시되지 않습니다. 대신 나는 "System.Data.DataRowView"(여러 번) 드롭 다운에지고있다.DropDownList의 System.Data.DataRowView

public void bind() 
{ 
    DataSet ds1 = new DataSet(); 
    SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]); 
    con.Open(); 
    string strQuery = "select CountryCode from AUser"; 
    SqlCommand cmd = new SqlCommand(strQuery, con); 
    using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
     da.Fill(ds1, "AUser"); 
    ddlMobile.DataSource = ds1.Tables["AUser"]; 
    ddlMobile.DataBind(); 
    con.Close(); 
} 

page_load에 바인딩 방법을 호출합니다. CountryCode에 대한 데이터 유형은 드롭 다운의 DataValueFieldDataTextField 속성을 설정해야합니다 India(+91), Australia(+61) 등 ...

+0

질문/문제가 무엇입니까? –

+0

정확하게 문제를 설명 할 수 있습니까? –

+0

드롭 다운에 실제 값 (인도 (+61)과 같은 국가 코드)이 표시되지 않습니다. 대신 나는 "System.Data.DataRowView"(여러 번) 드롭 다운에지고있다. – adityawho

답변

9

처럼 varchar(50) & 값은이다. 당신은 DataRowView.ToString의 기본 구현()가 무엇을보고있다

2

ddlMobile.DataSource = ds1.Tables["AUser"]; 
ddlMobile.DataValueField = "CountryCode"; 
ddlMobile.DataTextField = "CountryName"; 
ddlMobile.DataBind(); 

여기 COUNTRYCODE 및 COUNTRYNAME은 당신의 DataRow에서 그 값에 해당하는 열 이름이어야합니다. DataRow에서 특정 필드를 선택하여 표시하려면 다음과 같이하십시오.

ddlMobile.DataSource = ds1.Tables["AllUser"]; 
ddlMobile.DataTextField = "CountryCode"; // This is text displayed 
ddlMobile.DataValueField = "CountryCode"; // This is the value returned 
ddlMobile.DataBind(); 
1

당신은 DropDownList에서 DataTextField을 설정하지 않았습니다. 귀하의 영문에서 DataValueFieldDataTextField 속성을 추가도 설정하는 것이 좋습니다 : 다른 답변이 보여처럼

<asp:DropDownList ID="ddlMobile" runat="server" 
        DataTextField="CountryCode" 
        DataValueField="CountryCode" /> 

당신은 또한 뒤에 코드에서 설정할 수 있습니다.

그렇지 않으면 DataBound가 ToString()을 호출하여 데이터 필드를 찾지 못했기 때문에 정보가 표시되기 때문입니다.