【问题标题】:dynamically Binding GridView Rows using DropDownList headers as filter strings使用 DropDownList 标头作为过滤器字符串动态绑定 GridView 行
【发布时间】:2012-07-17 23:03:01
【问题描述】:

我整天都在努力让它工作。我需要根据标题下拉列表中的内容过滤网格视图。我可以在我的代码隐藏中做到这一点,但是我如何将我创建的表绑定到gridview? gridview.databind() 在这种情况下不起作用,因为这些列不是数据绑定列。

这是我的代码:

<asp:GridView ID="GridView3" runat="server" CellPadding="3"
        ForeColor="#333333" GridLines="None"
        AllowSorting="True" SortedAscendingHeaderStyle-CssClass="sortasc-header" 
        SortedDescendingHeaderStyle-CssClass="sortdesc-header"
        AllowPaging="True" PageSize="17" PagerSettings-Mode="NextPreviousFirstLast" 
        ShowHeaderWhenEmpty="True" PagerStyle-Font-Names="WebDings" PagerStyle-Font-Size="Medium"
        PagerSettings-FirstPageText=" 7 " PagerSettings-PreviousPageText=" 3 " 
        PagerSettings-NextPageText=" 4 " PagerSettings-LastPageText=" 8 " 
          Font-Size="Small" onpageindexchanging="GridView3_PageIndexChanging" 
          onsorting="GridView3_Sorting" AutoGenerateColumns="False" 
          ondatabound="GridView3_DataBound">

        <AlternatingRowStyle BackColor="White" ForeColor="#333333" />
         <Columns>
             <asp:BoundField HeaderText="Date" DataField="Date" />

             <asp:BoundField HeaderText="Time" DataField="Time"/>

            <asp:TemplateField HeaderText="Type">
                <HeaderTemplate>
                    <asp:DropDownList ID="TypeList" runat="server" Height="21px" Width="134px" 
                    DataSourceId="dsWarningType" 
                    DataTextValue="Name" DataValueField="Name">
                    <asp:ListItem Text="All" Selected="True"></asp:ListItem> 
                    </asp:DropDownList>
                 </HeaderTemplate>
             </asp:TemplateField>

                  <asp:TemplateField HeaderText="Process" >
             <HeaderTemplate>
                  <asp:DropDownList ID="Process" runat="server" Height="21px" Width="134px" 
                   >
                  </asp:DropDownList>
             </HeaderTemplate>
             </asp:TemplateField>

                   <asp:TemplateField HeaderText="Index" >
             <HeaderTemplate>
                  <asp:DropDownList ID="Index" runat="server" Height="21px" Width="134px" 
                   >
                  </asp:DropDownList>
             </HeaderTemplate>
             </asp:TemplateField>

             <asp:BoundField HeaderText="Body" DataField="Body"/>

         </Columns>
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

<PagerSettings FirstPageText=" 7 " LastPageText=" 8 " Mode="NextPreviousFirstLast"      NextPageText=" 4 " PreviousPageText=" 3 "></PagerSettings>

        <PagerStyle BackColor="#5D7B9D" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#DCE2E8" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />

<SortedAscendingHeaderStyle CssClass="sortasc-header"></SortedAscendingHeaderStyle>

<SortedDescendingHeaderStyle CssClass="sortdesc-header"></SortedDescendingHeaderStyle>
      </asp:GridView>

当我创建表时,它很好地绑定了日期、时间和正文字段,但将类型、进程和索引字段留空。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    使用 Eval 或 Bind 绑定下拉列表 例子

    <asp:TemplateField HeaderText="Process" >
             <HeaderTemplate>
                  <asp:DropDownList ID="Process" runat="server" Height="21px" Width="134px" 
                  Text='<%# Eval("Name") %>' 
                  </asp:DropDownList>
             </HeaderTemplate>
    </asp:TemplateField>
    

    【讨论】:

    • 当我使用 Eval 而不是 Bind 时出现异常:“TypeList”有一个无效的 SelectedValue,因为它不存在于项目列表中。参数名称:value 如果都是Bind,列还是不填充
    • @user1060498 仅当您必须读取数据时才进行用户评估。您已将所有下拉列表与 sqldatasource 绑定?
    猜你喜欢
    • 2010-10-24
    • 2014-10-15
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多