2012-06-07 2 views
0

Я хочу, чтобы получить значение ячейки из GridView, но возвращается пустая строка .Я реализована
код в SelectedIndexChanged случае RadioButtonList .I перебирать GridView и ячейки доступа кодом .Но проблема заключается в stll remaining.I использовали три ItemTemplate, каждый имеет один elemnt так, что каждый элемент получить свой собственный coulmn .aspxполучение текстовой метки в GridView

 <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" > 



       <Columns> 
<asp:TemplateField> 
    <itemtemplate> 
       <asp:Label ID="Label2" runat="server" Text='<%# Eval("qno") %>'> 

      </asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:TemplateField> 

      <ItemTemplate> 
        <asp:Label ID="Label3" runat="server" Text='<%# Eval("description") 
     %>'> 

      </ItemTemplate> 
      </asp:TemplateField> 
    <asp:TemplateField> 
    <itemtemplate> 
      <asp:RadioButtonList ID="RadioButtonList1" RepeatDirection="Horizontal" 
      runat="server" OnSelectedIndexChanged="changed" AutoPostBack="true" > 


      <asp:ListItem Value="agree" Selected="True" > 

      </asp:ListItem> 
       <asp:ListItem 
       Value="disagree"> 

      </asp:ListItem> 
       <asp:ListItem Value="strongagree"> 

      </asp:ListItem> 
       <asp:ListItem Value="strondisagree"> 

      </asp:ListItem> 
       </asp:RadioButtonList> 
    </itemtemplate> 
    </templatefield> 
       </Columns> 

      </asp:GridView> 

     <asp:Label ID="Labe11" runat="server" ></asp:Label> 
     Code behind: public void changed(object sender, EventArgs e) { 

       for(int i=0;i<GridView2.Rows.Count;i++) 
       { 
        string labtext; 
        RadioButtonList list = 
      GridView2.Rows[i].Cells[2].FindControl("RadioButtonList1") as RadioButtonList; 
        labtext= GridView2.Rows[i].Cells[0].Text; 


        Label1.Text = labtext; 


       } 



        } 

ответ

0

Включили ли вы все HTML на странице .aspx выше? То, что у вас там, не будет работать. ItemTemplates не формируют столбцы, они включаются в пределах Шаблоны TemplateField.

Пример (адаптировано из кода,
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.itemtemplate.aspx
и http://msdn.microsoft.com/en-us/library/aa479353.aspx):

<asp:GridView ID="GridView1" Runat="server" 
    <Columns> 

     <asp:TemplateField HeaderText="Description"> 
      <ItemTemplate> 
       <asp:Label ID="Label3" runat="server" Text='<%# Eval("description") %>'> 
      </ItemTemplate> 
     </asp:TemplateField> 

     <asp:TemplateField HeaderText="Choice"> 
      <ItemTemplate> 
       <asp:RadioButtonList ID="RadioButtonList1" RepeatDirection="Horizontal" runat="server" OnSelectedIndexChanged="changed" AutoPostBack="true" > 
        <asp:ListItem Value="agree" Selected="True" /> 
        <asp:ListItem Value="disagree" /> 
        <asp:ListItem Value="strongagree" /> 
        <asp:ListItem Value="strondisagree" /> 
       </asp:RadioButtonList> 
      </ItemTemplate> 
     </asp:TemplateField> 

    </Columns> 
</asp:GridView> 

Вам потребуется отдельное определение TemplateField для каждого столбца.

+0

Я использовал отдельные , но проблема по-прежнему – user1405508

0

Пожалуйста, попробуйте вместо этого:

GridView2.Rows[i].FindControl("RadioButtonList1") as RadioButtonList; 

С уважением, Sivakumar

Смежные вопросы