2014-11-19 1 views
1

드롭 다운 목록의 값을 선택하고 db에 삽입 한 후 문제가 있습니다. 드롭 다운 목록을 숨기고 싶습니다. 그냥 다음 두 그림에서와 같이 사용자가 평가 제품의 등급을 보여gridview asp.net에서 templatefield에 드롭 다운리스트 숨기기

enter image description here :

이 사용자가 제품의 DB에 등급을 삽입해야하는 방법을 보여주는 첫 번째 사진입니다

결과는 다음과 같아야합니다.

enter image description here

드롭 다운 목록은 이제 제품을 평가 한 사용자에게는 보이지 않습니다. 나는 RowDataBound 이벤트 다음 코드를 사용하여 시도했다 :

if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
     hsp_Narudzbe_Detalji_Result k = (hsp_Narudzbe_Detalji_Result)e.Row.DataItem; 
       if (k.Ocjena!=null) 
       { 
        e.Row.Cells[4].Text = k.ocjena; 
       } 
      } 

을하지만 그냥 한 번 성적을 보여주고, 내가 제품을 등급에 해당하는 버튼을 누를 때 드롭 다운 목록이 돌아, 작동하지 않습니다. .. :/

누군가 나를 도와 줄 수 있습니까?

편집 (페이지의 영문 코드) :

<asp:GridView ID="gridDetaljiNarudzbe" AutoGenerateColumns="false" AllowPaging="true" PageSize="10" runat="server" OnRowCommand="gridDetaljiNarudzbe_RowCommand" OnPageIndexChanging="gridDetaljiNarudzbe_PageIndexChanging" OnRowDataBound="gridDetaljiNarudzbe_RowDataBound"> 
     <Columns> 
      <asp:BoundField DataField="Naziv" HeaderText="Naziv" /> 
      <asp:BoundField DataField="Sifra" HeaderText="Šifra" /> 
      <asp:BoundField DataField="Cijena" HeaderText="Cijena" /> 
      <asp:BoundField DataField="Kolicina" HeaderText="Količina" /> 
       <asp:TemplateField HeaderText="Ocjena"> 
       <ItemTemplate> 
        <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:LinkButton ID="btnOcijeni" title="Ocijeni proizvod" CommandName="OcijeniCommand" CommandArgument='<%#Eval("ProizvodID") + ";" +((GridViewRow) Container).RowIndex%>' runat="server"><img src="../images/ocijeni.png" /></asp:LinkButton> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

그레이드는 다음과 같이로드 :

if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       DropDownList drop = e.Row.FindControl("DropDownList1") as DropDownList; 
       drop.Items.Add(new ListItem("")); 
       drop.Items.Add(new ListItem("1")); 
       drop.Items.Add(new ListItem("2")); 
       drop.Items.Add(new ListItem("3")); 
       drop.Items.Add(new ListItem("4")); 
       drop.Items.Add(new ListItem("5")); 
      } 
+0

당신이 우리에게 영문 코드를 표시 할 수 있습니다 희망이 도움? –

+0

예, 첫 번째 게시물을 수정했습니다. – perkes456

답변

1

이런 식으로 뭔가를 시도

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DropDownList ddl = e.Row.Cells[4].FindControl("DropDownList2") as DropDownList; 
     if (ddl != null) 
     { 
      // if (your_condition == true) 
      //{ 
        ddl .Visible = false; 

      //} 

     } 
    } 
} 
+0

불행하게도 DB 자체에서 등급 (1에서 5까지)을로드하지 않기 때문에 실제로 작동하지 않을 것이라고 생각합니다. 실제로 첫 번째 게시물에 표시된 예와 같이 rowdatabound 이벤트에서로드합니다. 편집 됨. 첫 번째 게시물에서 볼 수 있습니까? – perkes456

2

안녕 항목을 확인 아래의 템플릿 :

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    DropDownList ddl = e.Row.Cells[4].FindControl("DropDownList2") as DropDownList; 
    Label lblddl = e.Row.Cells[4].FindControl("gvlblddlVal") as Label; 
    if (!string.IsNullOrEmpty(lblddl.Text)) 
    {    
       ddl.Visible = false; 
       lblddl.Visible = true;   
    } 
    else 
    { 
       ddl.Visible = true; 
       lblddl.Visible =false; 
    } 
    } 
} 

+0

네, 작동합니다, 대단히 감사합니다! – perkes456

+0

편집 : 성적이 없어도 현재 그리드가 표시되지 않습니다. ?? 뭐가 될수 있었는지 ? – perkes456

+0

편집 템플릿을 사용할 때 그리드가 보이지 않거나 셀 내용이 보이지 않는 질문에 대해 설명해주십시오. –