2013-06-12 3 views
1

, 뒤의 코드는 다음과 같습니다 :데이터베이스에서 드롭 다운 목록을 채우는 방법? 내 드롭 다운 목록을 채우기 위해 노력하고있어 그래서 여기

protected void Page_Load(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(CommonFunctions.GetAppDBConnection(Constants.AppID, Constants.TMDDBConnection)); 
     con.Open(); 
     SqlCommand mycommand = new SqlCommand("select * from MSUnit", con); 
     SqlDataReader ddlvalues = mycommand.ExecuteReader(); 
     ddlTransactionCategory.DataSource = ddlvalues; 
     ddlTransactionCategory.DataTextField = "categoryCode"; 
     ddlTransactionCategory.DataValueField = "OrgID"; 
     ddlTransactionCategory.DataBind(); 


     mycommand.Connection.Close(); 
     mycommand.Connection.Dispose(); 
    } 

문제는, 내가이 일을 어떤 도움을받을 수없는 것? 이 코드가 올바르게 작동합니까?

+0

ddlvalues는 SqlDataReader 개체입니다. 드롭 다운 컨트롤의 유효한 DataSource가 아닙니다. ddlvalues에 값을 가져 와서 적절한 컨테이너에 넣어야합니다. 일반 목록이라고하면 데이터 소스로 지정합니다. 사용 후 SqlDataReader를 삭제하십시오. – rikitikitik

+0

그래서? 내 실수, 고마워! :) –

답변

1

PLZ 코드 아래 시도 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(CommonFunctions.GetAppDBConnection(Constants.AppID, Constants.TMDDBConnection)); 
    con.Open(); 
    SqlCommand mycommand = new SqlCommand("select * from MSUnit", con); 
    SqlDataAdapter adp =new SqlDataAdapter(mycommand); 
    DataSet ds =new DataSet(); 
    adp.Fill(ds); 
    ddlTransactionCategory.DataSource = ds; 
    ddlTransactionCategory.DataTextField = "categoryCode"; 
    ddlTransactionCategory.DataValueField = "OrgID"; 
    ddlTransactionCategory.DataBind(); 


    mycommand.Connection.Close(); 
    mycommand.Connection.Dispose(); 
} 

감사합니다, Hitesh

0

SqlDataReader에 바인딩 할 수 없거나 적어도 시도해 본적이 없습니다. 대신 DataTable 또는 DataSet을 가져 와서 채우고 같은 방법으로 드롭 다운에 바인딩합니다. 하나의

using (SqlConnection con = new SqlConnection(CommonFunctions.GetAppDBConnection(Constants.AppID, Constants.TMDDBConnection))) 
{ 
     con.Open(); 
     SqlDataAdapter da = new SqlDataAdapter("select * from MSUnit", con); 
     DataTable dt = new DataTable 
     da.Fill(dt) 
     ddlTransactionCategory.DataSource = dt; 
     ddlTransactionCategory.DataTextField = "categoryCode"; 
     ddlTransactionCategory.DataValueField = "OrgID"; 
     ddlTransactionCategory.DataBind(); 
} 

당신은 DataReader를 사용하려는 경우

아래 하나 별 하나를 삽입해야합니다

+1

당신이 똑같은 것을 쓴 것을 보지 못했습니다, 나는 데이터 테이블의 예를 드릴 것입니다 ... –

+0

예를 들어 주시겠습니까? –

0

사용 SqlDataAdataper처럼.

while (ddlvalues.Read()) 
{ 
    ddlTransactionCategory.Items.Add(new ListItem(ddlvalues.getString("OrgID"),ddlvalues.getString("categoryCode"))) 
} 
관련 문제