使用BoundField时在特定Gridview列上进行JQuery搜索

时间:2017-07-20 16:10:29

标签: c# jquery css asp.net gridview

我是一家公司的实习生,该公司给了我一项创建可以访问和操作公司数据库的网站的任务。它允许同事轻松研究客户端使用的代码。以下问题困扰了其他开发人员和我。

目前,jQuery搜索在没有按钮或"全部"单击按钮,搜索整个表格。其他按钮尚未搜索。它确实识别按钮,因此它输入if / else if语句,但不识别按钮的名称/类。

GridViews在从下拉列表中选择名称并使用每个列的get / set方法后,使用GrdiView.DataSource和DataBind()将数据绑定到它们。因此,我使用的是BoundField和DataField属性,而不是TemplateField。

问题:有没有办法为BoundField分配名称/类/值,以便jQuery可以找到列单元格?或者,有没有办法让TemplateField工作?

$(document).on("keyup", function ()
{
    SearchGrid('<%=txtSearchBox.ClientID%>', '<%=grdIniData1.ClientID%>', 
    '<%=grdIniData2.ClientID%>');

    function SearchGrid(txtSearch, grd1, grd2)
    {           
      if ($("input:radio[name=Section]").is(":checked"))
        {
        //Tried adding a CSS class to BoundField 'Section' and calling
        $('.Section').each(function (i)
        {
            alert("hello");
            $("Section").quicksearch("[id*=grdList] tr:not(:has(th))",
            {
               'testQuery': function (query, txt, row)
                {
                  return $(row).children(":eq(" + i")").text().toLowerCase().
                  indexOf(query[0].toLowerCase()) != -1;
                }
             });
          });
      }

     else if ($("input:radio[name=Name]").is(":checked"))
     {
        //For name and IniValue, tried accessing by BoundField name
        //Unsure how to name BoundField so jQuery can access
        $('#name').each(function ()
        {
           if ($("Name").find('td').eq(1).text() != "")
           {
              $(this).index();
           }
         });
      }
      else if ($("input:radio[name=IniValue]").is(":checked"))
      {
         var searchKey = $("[id *=" + txtSearch + " ]").val().toLowerCase();
         $("#grd1 tr td:nth-child(2)").each(function ()
         {
            var cellText = $(("input:radio[name=IniValue]").
            is(":checked")).text().toLowerCase();
            if (cellText.indexOf(searchKey) >= 0)
            {
               $("[id *=" + grd1 + " ]").parent().show();
            }
            else
            {
               $("[id *=" + grd1 + " ]").parent().hide();
            }
         });
      }
      else 
      {
         //Code is functional after this point
       }

<asp:GridView ID="grdIniData2" runat="server" AllowSorting="True" AutoGenereateColumns="false" AutoSizeColumnsMode="AllCellsExceptHeader" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="0" GridLines="Vertical" OnRowDataBound="grdIniData2_RowDataBound" OnSelectedIndexChanged="ddlClientList2_SelectedIndexChanged" OnSorting="grdIniData2_Sort" Font-Bold="True" Font-Names="Sylfaen" Font-Size="24px">
    <Columns>
        <asp:BoundField DataField="Section" HeaderText="Section" SortExpression="Section" ControlStyle-CssClass="Section" />
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        <asp:BoundField DataField="INIValue" HeaderText="INIValue" SortExpression="IniValue" />
        <asp:BoundField DataField="Description" HeaderText="Description" />
        <asp:BoundField DataField="Exposed" HeaderText="Exposed" />
        <asp:BoundField DataField="DataType" HeaderText="DataType" />
        <asp:BoundField DataField="DataFormat" HeaderText="DataFormat" />
    </Columns>
</asp:GridView>

1 个答案:

答案 0 :(得分:1)

您可以将类分配给BoundField。

<asp:BoundField DataField="DataFormat" HeaderText="DataFormat"
    ItemStyle-CssClass="MyCLass"
    HeaderStyle-CssClass="MyHeaderCLass" />