2012-03-14 1 views
1

ASP.NET 4.0 응용 프로그램에서 ext.net 1.3 컨트롤을 사용하고 있습니다. 내 Web Form에 여러 ComboBox 컨트롤이 있습니다. 이 페이지는 삽입 및 업데이트의 두 가지 작업을 수행하기로되어 있습니다. 새 레코드가 저장 될 때 문제는 없습니다. 그러나 기존 데이터베이스 값으로 ComboBox 컨트롤을 채울 때 다양한 문제가 나타납니다. 가장 큰 문제는 다음과 같습니다.Value를 얻기 위해 ComboBox 항목을 다시 선택해야하는 이유는 무엇입니까?

ComboBox는 데이터베이스의 텍스트를 표시하지만 채워지지 않으며 ComboBox 값 멤버를 선택할 수 없습니다. 이것은 채워지지 않기 때문입니다. ComboBox를 페이지로드 이벤트에 채우는 코드를 작성했습니다.

나는 데이터베이스에서 값을 선택하고 콤보 상자에이를 표시하려면이 코드를 사용하고 있습니다 :

string Query = "SELECT CustName FROM CustomerMaster WHERE CustID = " + Session["CustomerID"]; 

var result = DB.Single<Customer>(Query); 
CustomerComboBox.setValue = result.CustName; 

이 코드는 성공적으로 콤보 상자에서 고객 이름과 표시를 검색합니다. 그것이하지 않는 것은 ComboBox Item List에서 선택하지 않고 ComboBox를 채우지 않는 것입니다.

내가 사용하는 텍스트의 값 회원을 검색하려고하면 :

CustomerComboBox.SelectedItem.Value; 

이 오류를 제공합니다.

작동되게하려면 ComboBox를 다시 클릭하여 값을 채우려면 목록에서 동일한 고객 이름을 수동으로 선택해야합니다.

이 문제를 해결하는 방법은 무엇입니까? 페이지로드 이벤트

public void FillExtComboList(string ParameterFlag, ComboBox DropDownName) 
    { 
     string Query = ""; 
     using (TransactionScope transactionScope = new TransactionScope()) 
     { 
      using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["cncustomer"].ConnectionString.ToString())) 
      { 
       con.Open(); 
       SqlDataReader dr; 
       try 
       { 
        if (ParameterFlag == "Customer") 
        { 
         Query = "SELECT CustName FROM CustomerMaster"; 
        } 
        //Check whether the Drop Down has existing items. If YES, empty it. 
        if (DropDownName.Items.Count > 0) 
         DropDownName.Items.Clear(); 

        SqlCommand cmd = new SqlCommand(Query, con); 
        dr = cmd.ExecuteReader(); 

        while (dr.Read()) 
        { 
         Ext.Net.ListItem extLI = new Ext.Net.ListItem(); 
         extLI.Text = dr[0].ToString(); 
         DropDownName.Items.Add(extLI); 
        } 

        dr.Close(); 
        con.Close(); 
       } 
       catch (Exception ex) 
       { 
        con.Close(); 
        // RunCustomScript("alert('" + ex.Message.ToString() + "')", callingPageObjectName); 
       } 
      } /* End of SQL Connection */ 
      transactionScope.Complete(); 
     } /* End of Transaction Scope */ 
    } 

가 콤보 제어는 상기의 방법으로 작성되어

- - 편집

ext.net 콤보 채우기 위해 코드는하다.

답변

0

콤보 상자를 채울 수있는 지침이 표시되지 않고 선택한 값만 설정됩니다. Arent 당신이 누락 된 CustomerComboBox.DataSource = someList 또는 그런거야?

< - 편집 ->

미안 해요, 난 SetValue는 귀하의 페이지로드에있는 코드 ... OK라고 생각,이 문제에 대한 답하지만, 중요한 성능 수정 될 수 없습니다. 콤보로드 할 때이 작업을 수행해야한다 : 콤보 채울 때

Query = "SELECT CustID, CustName FROM CustomerMaster" 

: 는 SQL 쿼리를 실행 그래서 당신이 항목을 선택하고자 할 때

Ext.Net.ListItem extLI = new Ext.Net.ListItem(); 
extLI.Value = dr["CustId"].ToString();       
extLI.Text = dr["CustName"].ToString(); 
DropDownName.Items.Add(extLI); 

을, 당신은 그냥 이렇게 :

CustomerComboBox.setValue = Session["CustomerID"]; 

고객 이름을 얻으려면 데이터베이스로 돌아 가지 마십시오.

이제 combobox 클릭을 처리해야하는 코드를 공유 할 수 있습니까? 콤보를 채우기 때문에, 그것은 우리에게 어떤 ligth를 던질 수 있습니다.또한, 생각 와서

CustomerComboBox.DataBind() 

를 추가해보십시오, 나는 당신이 "DropDownName"를 사용하고 나중에에는 "CustomerComboBox"를 사용하여 Page_Load에 참조하십시오. 그것이 문제일까요?

+0

합니다. 코드를 사용하여 게시물을 수정했습니다. – RKh

+0

DropDownName과 CustomerComboBox의 마지막 줄 혼동을 무시하십시오. 전자는 매개 변수이고 후자는 ComboBox의 이름입니다. – RKh

0

내가 올바르게이 코드 시도 이해한다면 : 나는 콤보 상자가 PageLoad에 채워집니다 말했듯이

protected void Page_Load(object sender, EventArgs e) { 
     FillExtComboList(DropDownName); 

     // Set value that you want 
     DropDownName.SetValueAndFireSelect("Test 3"); 
    } 

    public void FillExtComboList(ComboBox DropDownName) { 
     try { 

      //Check whether the Drop Down has existing items. If YES, empty it. 
      if (DropDownName.Items.Count > 0) 
       DropDownName.Items.Clear(); 


      for (int i = 0; i < 10; i++) { 
       Ext.Net.ListItem extLI = new Ext.Net.ListItem(); 
       extLI.Text = "Test " + i; 
       DropDownName.Items.Add(extLI); 
      } 
     } catch (Exception ex) { 
      // RunCustomScript("alert('" + ex.Message.ToString() + "')", callingPageObjectName); 
     } /* End of Transaction Scope */ 
    } 
+0

setValue가 제대로 작동하지 않습니다. 값을 설정하지만 목록은 사라지 긴하지만 – RKh

+0

SetValueAndFireSelect를 사용해보십시오. ComboBox 값 목록? 당신은 하나의 명확한 예제를 보여줄 수 있습니까? 나는이 이상한 행동을 재현하려고 노력할 것이다. – Baidaly