Member 14052006 Ответов: 2

У меня есть radiobuttonlist в моем заголовке gridview, как я могу найти контроль этого radiobuttonlist


<asp:TemplateField HeaderText="New Position">                       
     <headertemplate>
          <asp:Label ID="lblpos" runat="server">New Position
          <asp:RadioButtonList ID="rblYesNoPos" runat="server" AutoPostBack="true">
                <asp:ListItem Selected="True" Value="Yes">Yes
                 <asp:ListItem Value="No">No
          
     
     <itemtemplate>
        <asp:Label ID="lblPosTot" runat="server" Text='<%# Bind("PosTotal")%>'>                            
     

<asp:TemplateField HeaderText="Replacement">
     <headertemplate>
         <asp:Label ID="lblre" runat="server">Replacement
         <asp:RadioButtonList ID="rblYesNoRe" runat="server" AutoPostBack="true">
         <asp:ListItem Selected="True" Value="Yes" Text="Yes">Yes
         <asp:ListItem Value="No" Text="No">No
         
     
     <itemtemplate>
          <asp:Label ID="lblReTot" runat="server" Text='<%# Bind("ReTotal")%>'>
      
<


Что я уже пробовал:

RadioButtonList rbl = (RadioButtonList)e.Row.Cells[1].FindControl("rblYesNoPos");
RadioButtonList rblR = (RadioButtonList)e.Row.Cells[1].FindControl("rblYesNoRe");

2 Ответов

Рейтинг:
1

Vincent Maverick Durano

Это зависит от того, где вы хотите получить к нему доступ. Если вы хотите его по адресу RowDataBound событие, то вам нужно убедиться, что вы проверяете на наличие соответствующего DataControlRowType во первых перед использованием FindControl метод. Например:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //access header template controls
    if (e.Row.RowType == DataControlRowType.Header)
    {
         RadioButtonList rblHeader = (RadioButtonList)e.Row.FindControl("rblYesNoPos");

    }

    //access row template controls
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
         RadioButtonList rblRow = (RadioButtonList)e.Row.FindControl("rblYesNoRe");

    }
} 


Если вы хотите сослаться на них по адресу Button Click событие, когда ваша кнопка находится внутри GridView шаблон, то вы можете сделать что-то вроде этого:

protected void Button1_Click(object sender, EventArgs e)
{
        Button b = (Button)sender;
        GridViewRow row = (GridViewRow)b.NamingContainer;
        if (row != null)
        {
            //access header template controls
            if (row.RowType == DataControlRowType.Header)
            {
                      RadioButtonList rblHeader = (RadioButtonList)row.FindControl("rblYesNoPos");

            }

           //access row template controls
           if (row.RowType == DataControlRowType.DataRow)
           {
                     RadioButtonList rblRow = (RadioButtonList)row.FindControl("rblYesNoRe");

           }
      }
}


Рейтинг:
0

F-ES Sitecore

Попробуйте сделать FindControl в строке

(RadioButtonList)e.Row.FindControl("rblYesNoPos");