2013-01-14 5 views
5

다른 스레드를 읽고 나에게 적합하지 않았습니다. \ GridViewDropDownList이 하나 있습니다. 내가 알고 싶습니다 어떻게 내가 DataSource을 설정할 수 있습니까? 나는 템플릿을 사용하지 않고 ItemTemplate이나 EditItemTemplate을 사용하지 않습니다. 어떻게 작동하는지 모르므로 아직 사용하지는 않습니다.데이터 소스를 DropDownList로 설정하는 방법은 무엇입니까?

지금까지 GridView를 작성하고 데이터로 필드를 채웠으나 DropDownList에 대해 동일한 작업을 수행하는 방법을 모르겠습니다. 뭔가가 나에게 ("The Reference of the Object was not set as an instance of an object")

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
     {         
      DropDownList Drop_Prioridades = (DropDownList)e.Row.FindControl("Drop_Prioridades"); 
      Drop_Prioridades.DataTextField = "BAIXA"; 
      Drop_Prioridades.DataValueField = "1"; 
      Drop_Prioridades.DataTextField = "MEDIA"; 
      Drop_Prioridades.DataValueField = "2"; 
      Drop_Prioridades.DataTextField = "ALTA"; 
      Drop_Prioridades.DataValueField = "3"; 
      Drop_Prioridades.DataBind(); 
     } 

나는 또한이 시도 오류를주고, 내가 생각없는/같은 오류 = \

DataSet ds = func.LoadPriority(); 

      foreach (DataRow row in ds.Tables[0].Rows) 
      { 
       ListItem item = new ListItem(); 
       item.Text = row["prioridade"].ToString(); 
       item.Value = row["id"].ToString(); 
       DropDownList ddlPrioridades = (DropDownList)e.Row.FindControl("Drop_Prioridades"); 
       ddlPrioridades.Items.Add(item); 
      } 

그리고이 너무 시도 ...

HTML :

<columns>      

    <asp:TemplateField HeaderText="PRIORIDADE" ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="100px"> 
      <ItemTemplate> 
       <asp:DropDownList ID="Drop_Prioridades" Width="120px" runat="server" ></asp:DropDownList> 
</ItemTemplate>      
</asp:TemplateField> 

코드 뒤에 :

아래와 같은 마크 업 이벤트를 바인딩
DataSet ds = func.CarregaPrioridade(); 
      DropDownList ddlist = (DropDownList)e.Row.FindControl("Drop_Prioridades"); 
      ddlist.DataSource = ds; 
      ddlist.DataTextField = "prioridade"; 
      ddlist.DataValueField = "id"; 
+3

더 나은 몇 가지 코드를 보여 드롭하는 데이터 소스를 지정하기 위해이 규정을 따르 – Ofiris

+0

여기를 검색해보십시오. [많은 수의 .NET 예] (http://www.google.com) – MethodMan

+0

나는 게시물을 편집했습니다. 그게 내가 지금까지 얻은 전부다. \ 나는 이미 거기에서 수색했다. 나는 아직도 그것을하고있다. 감사한다. – Ghaleon

답변

0

는이 같은 내 문제를 해결했다. 너 뭐 해봤 니?
1

바인드 행 데이터 : 뒤에 코드에서

<asp:GridView ID="grvGrid" runat="server" OnRowDataBound="grvGrid_RowBound"> 
    <Columns> 
     <asp:TemplateField ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Top" ItemStyle-Width="7%"> 
       <ItemTemplate> 
        <asp:DropDownList ID="ddlList" runat="server"/> 
       </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView? 

:

protected void grvGrid_RowBound(object sender, GridViewRowEventArgs e) 
{ 
    DropDownList ddlList= (DropDownList)e.Row.FindControl("ddlList"); 
    ddlList.DataSource = _dSource; 
    ddlList.DataTextField = "text"; 
    ddlList.DataValueField = "value"; 
    ddlList.DataBind(); 


    } 

또는

같은를해야 할 것입니다 드롭 다운 경우 옵션을 사용하면 RowDataBound 이벤트 중에 바인드 할 필요가 없습니다. 다음과 같이 마크 업의 드롭 다운 목록에 항목을 추가 할 수 있습니다.

<asp:DropDownList id="ddlList"runat="server"> 

       <asp:ListItem Selected="True" Value="White"> White </asp:ListItem> 
       <asp:ListItem Value="Silver"> Silver </asp:ListItem> 
       <asp:ListItem Value="DarkGray"> Dark Gray </asp:ListItem> 
       <asp:ListItem Value="Khaki"> Khaki </asp:ListItem> 
       <asp:ListItem Value="DarkKhaki"> Dark Khaki </asp:ListItem> 

      </asp:DropDownList> 
+0

데이터 집합을 반환하고 데이터 집합에서 foreach를 만들고 드롭 다운 목록을 채우는 일반 쿼리를 수행 할 수 있습니까?이 방법으로 날 보여 줬어? – Ghaleon

+0

@Ghaleon 'grvGrid_RowBound'메서드는 그리드의 각 행에 대해 호출됩니다. 따라서 데이터 세트 _dsource는 DataTable 또는 DataView가 될 수 있습니다. 올바르게 이해하면 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound를 읽을 수 있습니다. 자세한 내용은 aspx – ajp

+0

@Ghaleon이 없으면 ddlList.Items.Add()를 사용하여 해당 항목을 추가해야합니다. – StingyJack

1

이 줄에서 오류가 발생하면 데이터 원본이나 데이터 집합에서 동일한 열 이름을 사용해야합니다. 해당 텍스트 이름 인 경우 ddlList.DataTextField = "textname";

그냥 생각해보십시오.

DataSet ds = SomeMethodToFillTheDataSet() 

foreach(DataRow row in ds.tables[0].Rows) 
{ 
    ListItem item = new ListItem(); 
    item.text = "fieldName"; e.g Name 
    item.value = "FieldName"; e.g ID 
    DropDOwnList.Items.Add(item); 
} 
+0

나는 그것을 또한 확인했다. 네가 한 것과 똑같은 생각이야! 하지만 그 방법은 저에게'prioridade'와'id'라는 두 개의 컬럼을 리턴하지만 여전히 에러 = \\ – Ghaleon

+0

입니다. 그러나 이제 에러는 제가 DataSource를 설정 한 라인에 있습니다 : ddlist.DataSource = ds; – Ghaleon

+0

ds에 값이 있습니까 ?? 중단 점을 사용하고 실제로 반환하는 내용을 확인하십시오. aspx 페이지에 SQLDATASOURCE가 있습니까? – rach

1

이 친절

DataTable dt = ds.tables[0]; 
    DropdownId.DataSource = dt; 
    DropdownId.DataTextField = "Text Column"; 
    DropdownId.DataValueField = "Value Column"; 
    DropdownId.DataBind(); 
    DropdownId.Items.Insert(0, new ListItem("-- Select --", "0")); 
관련 문제