2012-01-03 3 views
0

Я не могу найти элемент управления текстовым полем в gridview. А ниже код всегда возвращается NULLНевозможно найти элемент управления TextBox в ItemTemplate

HTML:

<asp:TemplateField> 
    <HeaderTemplate> 
     <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
       margin-left: 0px"> 
      <tr> 
       <td> 
        &#160;&#160; 
       </td> 
      </tr> 
      <tr> 
       <td align="center"> 
        SkillColumn1 
       </td> 
      </tr> 
     </table> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <table cellpadding="0" cellspacing="0" style="width: 100%"> 
      <tr style="width: 100%"> 
       <td style="width: 25%"> 
        <asp:TextBox ID="txt_Skill1" runat="server" Text='<%# Eval("Skill1_value") %>' 
          CssClass="tms-secondaryRowTextBoxNew" Width="35%" /> 
       </td> 
      </tr> 
     </table> 
    </ItemTemplate> 

Вся размечать:

<asp:GridView ID="gvLocView" runat="server" AutoGenerateColumns="False" CellPadding="0" 
       Width="100%" BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" 
       EmptyDataText="No Data Available" 
       onrowdatabound="gvLocView_RowDataBound"> 
       <Columns>      
        <asp:TemplateField> 
         <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
           <tr> 
            <td align="center"> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             Location 
            </td> 
           </tr> 
          </table> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%"> 
            <td style="width: 50%"> 
             <asp:Label ID="lblLocation" runat="server" Text='<%# Eval("Location") %>' CssClass="tms-secondaryRowTextBoxNew" /> 
            </td> 
           </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="14%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
           <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             Quarter 
            </td> 
           </tr> 
          </table> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%"> 
            <td style="width: 100%"> 
             <asp:Label ID="lblQuarter" runat="server" Text='<%# Eval("Quarter") %>' CssClass="tms-secondaryRowTextBoxNew" /> 
            </td> 
           </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="13%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
            <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             SkillColumn1 
            </td> 
           </tr> 
           </table> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%"> 
            <td style="width: 25%"> 
            <asp:TextBox ID="txt_Skill1" runat="server" Text='<%# Eval("Skill1_value") %>' 
              CssClass="tms-secondaryRowTextBoxNew" Width="35%" />           
            </td> 
            </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
        </asp:TemplateField> 
        <asp:TemplateField> <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
           <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             SkillColumn2 
            </td> 
           </tr> 
           </table> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%">          
            <td style="width: 25%"> 
             <asp:TextBox ID="txt_Skill2" runat="server" Text='<%# Eval("Skill2_value") %>' 
              CssClass="tms-secondaryRowTextBox" Width="35%" /> 
            </td> 
            </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
         </asp:TemplateField> 
        <asp:TemplateField> 
        <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
           <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             SkillColumn3 
            </td> 
           </tr> 
           </table> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%"> 
            <td style="width: 25%"> 
             <asp:TextBox ID="txt_Skill3" runat="server" Text='<%# Eval("Skill3_value") %>' 
              CssClass="tms-secondaryRowTextBox" Width="35%" /> 
            </td> 
            </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
           <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             SkillColumn4 
            </td> 
           </tr> 
           </table> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%"> 
            <td style="width: 25%"> 
             <asp:TextBox ID="txt_Skill4" runat="server" Text='<%# Eval("Skill4_value") %>' 
              CssClass="tms-secondaryRowTextBox" Width="35%" /> 
            </td> 
           </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
        <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
           <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             SkillColumn5 
            </td> 
           </tr> 
           </table> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%"> 
            <td style="width: 25%"> 
             <asp:TextBox ID="txt_Skill5" runat="server" Text='<%# Eval("Skill5_value") %>' 
              CssClass="tms-secondaryRowTextBox" Width="35%" /> 
            </td> 
           </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
        <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
           <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             SkillColumn6 
            </td> 
           </tr> 
           </table> 
         </HeaderTemplate> 
         <ItemTemplate>        
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%"> 
            <td style="width: 25%"> 
             <asp:TextBox ID="txt_Skill6" runat="server" Text='<%# Eval("Others") %>' 
              CssClass="tms-secondaryRowTextBox" Width="35%" /> 
            </td>          
           </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
        <HeaderTemplate> 
          <table cellpadding="0" cellspacing="0" style="padding-left: 0px; padding-right: 0px; 
           margin-left: 0px"> 
           <tr> 
            <td> 
             &#160;&#160; 
            </td> 
           </tr> 
           <tr> 
            <td align="center"> 
             Total 
            </td> 
           </tr> 
           </table> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <table cellpadding="0" cellspacing="0" style="width: 100%"> 
           <tr style="width: 100%"> 
            <td style="width: 100%"> 
             <asp:Label ID="lblTotal" runat="server" Text='<%# Eval("Total") %>' CssClass="tms-secondaryRowTextBoxNew" /> 
            </td> 
           </tr> 
          </table> 
         </ItemTemplate> 
         <HeaderStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" Width="9%" /> 
         <ItemStyle BorderColor="#013963" BorderStyle="Solid" BorderWidth="1px" /> 
        </asp:TemplateField> 
       </Columns> 
       <EditRowStyle CssClass="tms-primaryRow_new" /> 
       <HeaderStyle Font-Bold="True" ForeColor="White" CssClass="tms-gridViewHeader_fy11" 
        HorizontalAlign="Center" /> 
       <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
       <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
      </asp:GridView> 

Codebehind:

if (e.Row.RowType == DataControlRowType.Header) 
    { 
     int counter=0; 

     for (int j = 1,col=2; j <= 7; j++,col++) 
     { 
      TextBox t = (TextBox)e.Row.Cells[col].FindControl("txt_Skill" + j.ToString()); 

      if (t != null) 
      { 
       t = e.Row.FindControl("txt_Skill" + j.ToString()) as TextBox; 
       if (!string.IsNullOrEmpty(strSkillArray[counter])) 
        t.Text = strSkillArray[counter].ToString(); 
      }     
     } 
    } 

Исключение:

System.Web.HttpException было необработанным кодом пользователя
Message = "DataBinding: 'System.Data.DataRowView' не содержит свойства с именем 'Skill1_value'." Source = "System.Web"
ErrorCode = -2147467259 StackTrace: в System.Web.UI.DataBinder.GetPropertyValue (контейнер объекта, имя_программы) в System.Web.UI.DataBinder.Eval (контейнер объекта, строка [ ] expressionParts) в System.Web.UI.DataBinder.Eval (контейнер объекта, выражение String) в System.Web.UI.TemplateControl.Eval (выражение String) на ASP.location_aspx._ DataBinding отправитель _control53 (Объект , EventArgs e) в d: \ ABC \ Location.aspx: строка 251 в System.Web.UI.Control.OnDataBinding (EventArgs e) в System.Web.UI.Control.DataBind (Boolean raiseOnDataBinding) в системе. Web.UI.Control.DataBind() в System.Web.UI.Control.DataBindChildren() в System.Web.UI.Control.DataBind (Boolean raiseOnDataBinding) в System.Web.UI.Control.DataBind() в System.Web.UI.Control .DataBindChildren() в System.Web.UI.Control.DataBind (Boolean raiseOnDataBinding) в System.Web.UI.Control.DataBind() в System.Web.UI.WebControls.GridView.CreateRow (Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType ROWTYPE, DataControlRowState RowState, булева DataBind, объект DataItem, DataControlField [] поля, TableRowCollection строки, PagedDataSource pagedDataSource) на System.Web.UI.WebControls.GridView.CreateChildControls (IEnumerable Datasource, булева dataBi nding) на System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding (IEnumerable данные) на System.Web.UI.WebControls.GridView.PerformDataBinding (IEnumerable данных) на System.Web.UI.WebControls.DataBoundControl. OnDataSourceViewSelectCallback (IEnumerable данные) на System.Web.UI.DataSourceView.Select (DataSourceSelectArguments аргументы, DataSourceViewSelectCallback обратного вызова) в System.Web.UI.WebControls.DataBoundControl.PerformSelect() в System.Web.UI.WebControls. BaseDataBoundControl.DataBind() в System.Web.UI.WebControls.GridView.DataBind() at Location.UpgradeAccount() в d: \ ABC \ Locat ion.aspx.cs: строка 368 в Location.Page_Load (отправитель объекта, EventArgs e) в d: \ ABC \ Location.aspx.cs: строка 70 в System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr ∥f∥p, объект О, объект т, EventArgs е) в System.Web.Util.CalliEventHandlerDelegateProxy.Callback (отправитель объекта, EventArgs е) на System.Web.UI.Control.OnLoad (EventArgs е) в System.Web.UI.Control.LoadRecursive() в System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:

+0

Вы ищете текстовое поле в шаблоне заголовка, когда оно находится в ItemTemplate! e.Row.RowType == DataControlRowType.Header должен быть ItemTemplate – Lloyd

+0

, если вы хотите получить ответ, вставьте полную соответствующую разметку, проверяемое событие и то, что вы пытаетесь достичь. – naveen

+0

Я пытался назначить эти заголовки данных: Location Q Dotnet Java Mainframe Тестирование Базы данных Всего Всего – venkat

ответ

0

Ваше исключение не имеет ничего общего с отправленным вами кодом. Страница не может привязать вашу сетку к любому источнику данных, который вы ему дали, потому что он не может найти значение Skill1_value в вашем источнике данных.

+0

Привет, Я согласен с вашим комментарием. Но здесь я пытаюсь назначить текстовый текстовый текст txt_Skill1 как «Dotnet». Для этого я не могу назначить то же самое. Как назначить ??? – venkat

+0

Ваша привязка данных не работает. Если 'if (e.Row.RowType == RowType.DataRow)' никогда не возвращает 'true', поиск текстового поля в строке заголовка не поможет. – sq33G

+0

@sukumar Я согласен с sq33G в том, что ваш источник данных пуст, и нет строки вообще –

0

Там нет ничего в HeaderTemplate. Вы должны использовать DataControlRowType.DataRow, чтобы найти тип строки.

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    int counter=0; 

    for (int j = 1,col=2; col <= 7; j++,col++,counter++) 
    { 
     TextBox t = (TextBox)e.Row.Cells[col].FindControl("txt_Skill" + j.ToString()); 
     if (t != null) 
     { 
      if (!string.IsNullOrEmpty(strSkillArray[counter])) 
       t.Text = strSkillArray[counter].ToString(); 
     }     
    } 
} 
+0

Если я использую DataRow, выполнение не будет проходить внутри IF. Поэтому я меняю на headerRow. – venkat

+0

Пожалуйста, можете указать код для него. Тем не менее я не могу найти элемент управления текстовым полем. доброжелательная помощь – venkat

+0

Условие IF e.Row.RowType == DataControlRowType.DataRow возвращает false и не входит внутрь. вручную я пытался перетащить в if, но ничего не помог. – venkat

-1

Ваш texbox в Itemptemplate, и вы ищете в шаблоне заголовка, поэтому

Пожалуйста, обновите ваш код согласно ниже

изменения, если условие

if (e.Row.RowType == DataControlRowType.DataRow) 

код, чтобы найти текстовое поле

TextBox txt_Skill= (TextBox)e.Row.FindControl("txt_Skill"); 
+0

Условие IF e.Row.RowType == DataControlRowType.DataRow возвращает false и не входит внутрь. вручную я попытался перетащить указатель отладки выполнения внутри IF, но все равно ничего не решил. – venkat

+0

Получение снова исключения: System.Web.HttpException не был обработан кодом пользователя. DataBinding: «System.Data.DataRowView» не содержит свойства с именем «Skill1_value». – venkat

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