2011-05-02 5 views
1

내가 원하는 "선택"나의 드롭 다운리스트 디스플레이 첫 번째 값 : "-choose 자동차 -"DropDownList로 첫 번째 값 표시

나는이 방법에 성공

:

protected void ddl1_DataBound(object sender, EventArgs e) 
{ 
    Convert.ToInt32(ddl1.SelectedValue); 
    ddl1.Items.Insert(0, new ListItem("-Choose car-", "-Choose car-" )); 
} 

하고 괜찮아요은 "-choose - "처음에하지만 문제는 지금은 그런 식으로, 예를 들어, 드롭 다운리스트 쇼 값이있는 경우이다 :

-Choose car- 
Subaro 
Fiat 
Honda 

첫 번째 값 I가 사이트에 입력하고있어 그 표시를 Subaro입니다 , 그리고 볼 - 사용자는 드롭 다운 목록을 열어야합니다. 그러면 사용자는 첫 번째 위치에서 선택기를 볼 수 있습니다. 처음부터 페이지로드부터 어떻게 할 수 있습니까? -choose car는 ddl에서 페이지로드. 코드를 잘못 읽은 곳이 있습니까?

AppendDataBoundItems = "true"으로 itemlist를 시도했지만 오류가 발생했습니다. 성공할 때 문제는 전에 말했던 것과 같습니다.

+3

'SelectedIndex' 속성을'0'으로 설정하려고 했습니까? – R0MANARMY

+0

예. 같은 resoult. – Oshrib

+0

해당 드롭 다운 목록이 바인드 된 경우 값이 데이터베이스에서 발생했을 수 있습니다. 그것이 묶여 있습니까? – Vale

답변

4

AppendDataBoundItems 속성을 사용하면 올바른 방향으로 가고 있었고 목록을 데이터 바인딩하는 경우 true으로 설정해야합니다.

마크 업이

<asp:DropDownList runat="server" ID="ddl1" AppendDataBoundItems="true"> 
    <asp:ListItem Text="-Choose car-" /> 
</asp:DropDownList> 

과 같아야 뒤에 코드가 아마 이미 이것은 이 차에 드롭의 첫 번째 옵션으로 텍스트를 선택하여 배치합니다이

ddl1.DataSource = [your datasource goes here]; 
ddl1.DataBind(); 

과 같이 보입니다 아래 목록의 나머지 옵션을 추가하십시오.


지금 이유의 흥미로운 부분에 대해 당신은 (안 선택되는 첫 번째 항목) 당신이보고 된 행동을보고했다.

public int SelectedIndex 
{ 
    get 
    { 
     int num = 0; 
     num++; 
     while (num < this.Items.Count) 
     { 
      if (this.Items[num].Selected) 
      { 
       return num; 
      } 
     } 
     return -1; 
    } 
    set 
    { 
     // stuff you don't care about 

     this.ClearSelection(); 
     if (value >= 0) 
     { 
      this.Items[value].Selected = true; 
     } 

     // more stuff you don't care about 
    } 
} 

당신이 볼 수 있듯이, 인덱스 : 당신이 JustDecompile 같은 도구를 사용하여 SelectedIndex의 구현을 보면 당신은 다음과 같습니다 코드를 볼 수 있습니다 (Telerik와 제휴하지를, 그들의 도구를 사용하는 일이) 아무 곳이나 저장되지 않은 경우 Selected 속성이 true로 설정된 항목을 기반으로 매번 계산됩니다. 마크 업에서 SelectedIndex을 0으로 설정하고 데이터 소스를 데이터 바인딩하면 해당 목록의 0 번째 항목 인 Subaro이 선택됩니다. 목록 시작 부분에 새 항목을 삽입하면 Subaro이 선택된 항목으로 표시되므로 페이지가로드 될 때 Choose car이 아닌 선택한 항목이 표시됩니다. 코드를 사용하여 Choose car을 선택한 항목으로 표시하려면 데이터 드롭 다운에서 데이터 바인딩을 수행해야합니다. 이것은 단지 DropdownList의 작동 방식을 구현 한 것입니다. 이후 버전의 ASP.NET에서 변경 될 수 있으므로이 방법으로 작동하는 코드를 작성하지 마십시오.

+0

감사합니다. 끝에, 문제는 너무 어리 석다.) ... 나는 4 개의 계단식 ddl을 가지고있다 ... 그리고 내가해야할 일은 그들 중 하나의 마크 업에 AppendDataBoundItems = "true"를 추가하는 것이다. listitem의 값을 0으로 설정합니다. 다음 단계는 if (! ispostback) {ddl2 .... clear (...) insert = "- choose-"}가 selectedindexchanged 인 경우입니다. 사용자가 다시 게시 한 후에도 고르다. 모두 정상적으로 작동합니다. 그래서 prob는 모든 ddl이 WHERE ..로 서로 연결되어 있었고 오류를 방지하기 위해 각각 Listendem에 AppendDataBoundItems = "true"및 value = 0이 필요했습니다. – Oshrib

+0

@Bside : 질문에 계단식 드롭 다운이 있음을 언급 했어야합니다.내 대답이 당신의 경우에 도움이되는지 확실하지 않습니다. – R0MANARMY

1

당신은 ddl1.Items.Insert(0, new ListItem("-Choose car-", "-Choose car-")); 먼저 할, 그리고 ddl1.SelectedIndex = 0보다

+0

오케이, 어디에서해야합니까? ddl1_DataBound에? 또는 page_Load? – Oshrib

+0

DataBound에서 시도하십시오 – Vale

+0

오류가 발생했습니다 : 입력 문자열이 올바른 형식이 아닙니다. – Oshrib

1
  1. 그가 첫 번째 항목
  2. 때 확인 데이터 소스를 바인딩 있는지 확인하고 "-choose 케어가"항목을하기 전에 먼저 선택 삽입 당신은 당신의 첫 번째 항목을 삽입 - "자동차 -"포스트 백 각각에 한 번하지 않습니다. 첫 번째 항목을 추가 하시려면 IsPostBack을 확인하십시오. 편집 : 예 : (! IsPostBack을)

    보호 무효를 Page_Load (개체를 보낸 사람, EventArgs입니다 전자) { { ddl1.Items.Insert (0 경우, 새로운을 ListItem ("- 자동차 - 선택", " -Cheose car- ")); }

    ddl1.SelectedIndex = 0; 
    

    }

0
 private void FillCar() 
     {  
      DataTable dt = GetCar(); 
      ddl1.Items.Clear(); 
      ddl1.DataSource = dt; 
      ddl1.DataTextField = "carName"; // field name in the database 
      ddl1.DataValueField = "CarNum"; // field name in the database 
      ddl1.DataBind(); 
      ListItem li = new ListItem(); 
      li.Text = "--Choose car--"; 
      li.Value = "-1"; 
      ddl1.Items.Insert(0, li); 
      ddl1.SelectedIndex = 0; 
     } 

나는 다음과 같은 방법을 사용하고 if (!IsPostBack){}에서 페이지로드에 문의하십시오.

+0

당신은 아마 내가 SQL에 LINQ를 사용한다는 것이 프로 브롬이라고 생각합니까? 여기 작성한 내용에 대해 어떻게 연결해야합니까? – Oshrib

+0

아니, 나는 당신이 당신의 드롭 다운리스트를 묶는 방법을 모르지만 이것이 당신이 완벽하게 원하는 것을하기위한 간단한 방법이라고 생각한다. –

+0

당신은 여전히 ​​LINQ to SQL –