2013-05-01 2 views
5

SQL таблицы сервера структуры:Отображение CheckBox в Gridview DataBound на основе VARCHAR колонки

ChapName  varchar(200) 
Status   varchar(1) 

Требование:

  • Я хочу, чтобы отобразить флажок в GridView ASP.NET из Visual Studio 2010 если значение столбца состояния равно T, пусть оно будет проверено и не отмечено в противном случае. , но он показывает только текстовое поле.
  • Я пробовал <asp:templatefield> и <asp:itemtemplate>, но он вызывает ошибку, если я попытаюсь связать этот флажок.
  • любой образец кода требуется, поскольку я начинаю в этом поле.

Код я пробовал:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
      CheckBox c = (CheckBox)GridView1.FindControl("ChkStatus"); 
      TextBox TB = (TextBox)GridView1.FindControl("Status"); 

     //Response.Write(TB.Text); 
      if (TB.Text == "T") 
      { 
       c.Checked = true; 
      } 
      else 
      { 
       c.Checked = false; 
      } 
    } 

ошибка я получил

Ссылка на объект не указывает на экземпляр объекта.

Описание: Необработанное исключение возникло во время выполнения текущего запроса сети . Просмотрите трассировку стека для получения дополнительной информации об ошибке и где она возникла в коде.

Сведения об исключении:
System.NullReferenceException: Ссылка на объект не установлена ​​в экземпляр объекта.

Aspx разметки:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
       DataKeyNames="Comp,QTypeCode" DataSourceID="SDS_QType_Edit" 
       BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" 
       BorderWidth="1px" 
       CellPadding="4" ForeColor="Black" GridLines="Vertical" 
       AllowPaging="True" AllowSorting="True" 
       onselectedindexchanged="GridView1_SelectedIndexChanged" 
       onrowdatabound="GridView1_RowDataBound"> 
    <AlternatingRowStyle BackColor="White" /> 
    <Columns> 
     <asp:CommandField ShowEditButton="True" ShowSelectButton="True" /> 
     <asp:BoundField DataField="QTypeCode" HeaderText="QTypeCode" 
         SortExpression="QTypeCode" InsertVisible="False" 
         ReadOnly="True" /> 
     <asp:BoundField DataField="Descr" HeaderText="Descr" SortExpression="Descr" /> 
     <asp:CheckBoxField DataField="AnsReq" HeaderText="AnsReq" ReadOnly="True" 
          SortExpression="AnsReq" /> 
     <asp:CheckBoxField DataField="OptionPrint" HeaderText="OptionPrint" 
          ReadOnly="True" SortExpression="OptionPrint" /> 
     <asp:BoundField DataField="Status" HeaderText="Status" 
         SortExpression="Status" /> 
     <asp:BoundField DataField="TransDate" HeaderText="TransDate" 
         SortExpression="TransDate" /> 
     <asp:BoundField DataField="UserName" HeaderText="UserName" 
         SortExpression="UserName" /> 
     <asp:TemplateField HeaderText="Check Box" > 
      <ItemTemplate> 
       <asp:CheckBox ID ="ChkStatus" Text="text" runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
    <EditRowStyle Wrap="False" /> 
    <EmptyDataRowStyle Wrap="False" /> 
    <FooterStyle BackColor="#CCCC99" /> 
    <HeaderStyle Wrap="False" BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
    <RowStyle Wrap="False" BackColor="#F7F7DE" /> 
    <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" 
         Wrap="False" /> 
    <SortedAscendingCellStyle BackColor="#FBFBF2" /> 
    <SortedAscendingHeaderStyle BackColor="#848384" /> 
    <SortedDescendingCellStyle BackColor="#EAEAD3" /> 
    <SortedDescendingHeaderStyle BackColor="#575357" /> 
</asp:GridView> 
+0

может вы обновляете вопрос с помощью кода gridview в файле aspx? – Damith

ответ

3

Предположим, вы сетка определяется, как показано ниже на ASMX

<asp:GridView ID="GridView1" runat="server" 
    onrowdatabound="GridView1_RowDataBound" AutoGenerateColumns="False"> 
    <Columns> 
     <asp:BoundField DataField="ChapName" HeaderText="ChapName" /> 
     <asp:TemplateField HeaderText="Status" Visible ="false"> 
      <ItemTemplate> 
       <asp:Label ID="Status" runat="server" Text='<%# Bind("Status") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Check Box" > 
     <ItemTemplate> 
      <asp:CheckBox ID ="ChkStatus" Text="text" runat="server" /> 
     </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

на ряд данных Bound случае вы можете найти элементы управления, как показано ниже

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 

    CheckBox c = e.Row.FindControl("ChkStatus") as CheckBox; 
    Label lbl = e.Row.FindControl("Status") as Label; 
    if (c!= null && lbl != null) 
    { 
     c.Checked = (lbl.Text == "T"); 
    } 

} 
+0

не работает. такая же ошибка Ссылка на объект не установлена ​​в экземпляр объекта –

+0

Хорошо, какая строка? и можете ли вы обновить вопрос с помощью кода gridview в aspx? – Damith

+1

Вы не добавляете поле шаблона для статуса, поэтому это не работает. добавьте поле шаблона и внутри, чтобы добавить ярлык, как мой ответ. дайте идентификатор ярлыка как статус – Damith

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