c# - 未处理的 GridView 'GridView1' 触发事件排序

标签 c# data-binding gridview sqldatasource

我在 C# 中使用工具箱创建了一个 GridView , 它能够显示和排序我的 sqldatasource 中的项目,但是当我更改 sqldatasource 时,如下面的代码所示,它显示错误“The GridView 'GridView1' fired event Sorting which was not handled”

SqlDataSource searchResults = new SqlDataSource(WebConfigurationManager.ConnectionStrings["MyDbConn"].ToString(), "SELECT * FROM Books WHERE id=1");
GridView1.DataSourceID = null;
GridView1.DataSource = searchResults;
GridView1.DataBind();

下面是我的 Default.aspx 中的 gridview 和 sqldataconnection 代码(通过从工具箱拖放创建)

        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
        AllowSorting="True" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#DEDFDE" 
        BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" 
        GridLines="Vertical" Width="748px">
        <AlternatingRowStyle BackColor="White" />
        <Columns>
            <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
            <asp:BoundField DataField="BookName" HeaderText="BookName" 
                SortExpression="BookName" />
            <asp:BoundField DataField="Status" HeaderText="Status" 
                SortExpression="Status" />
            <asp:BoundField DataField="ReturnDate" HeaderText="ReturnDate" 
                SortExpression="ReturnDate" />
            <asp:CheckBoxField DataField="Reserve" HeaderText="Reserve" 
                SortExpression="Reserve" />
        </Columns>
        <FooterStyle BackColor="#CCCC99" />
        <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
        <RowStyle BackColor="#F7F7DE" />
        <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#FBFBF2" />
        <SortedAscendingHeaderStyle BackColor="#848384" />
        <SortedDescendingCellStyle BackColor="#EAEAD3" />
        <SortedDescendingHeaderStyle BackColor="#575357" />
    </asp:GridView>

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:MyDbConn %>" 
        SelectCommand="SELECT * FROM [Books]"></asp:SqlDataSource>

最佳答案

更新

您不必动态添加新的数据源,因为您想要更改的只是数据源的 SelectCommand。就这样

SqlDataSource1.SelectCommand = "SELECT * FROM Books WHERE id=1";
gv.DataBind();

如果你想通过搜索词来搜索书籍,你可以这样做

SqlDataSource1.SelectCommand = "SELECT * FROM Books WHERE id LIKE '%" + searchTxt.Text + "'%";
gv.DataBind();

据我所知,动态添加新的数据源似乎会导致严重的问题。


请试试

SqlDataSource searchResults = new SqlDataSource(WebConfigurationManager.ConnectionStrings["MyDbConn"].ToString(), "SELECT * FROM Books WHERE id=1");
searchResults.ID = "searchResults"; //or something else
this.Controls.Add(searchResults);
GridView1.DataSourceID = searchResults.ID;
GridView1.DataBind();

或更容易

 SqlDataSource searchResults = new SqlDataSource(WebConfigurationManager.ConnectionStrings["MyDbConn"].ToString(), "SELECT * FROM Books WHERE id=1");
this.Controls.Add(searchResults);
GridView1.DataSource = searchResults;
GridView1.DataBind();

关于c# - 未处理的 GridView 'GridView1' 触发事件排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9518056/

相关文章:

c# - 如何在 Excel 中使用正确的列打开 CSV 文件

C# 将 int 类型的对象转换为可为 null 的枚举

javascript - 将带有分隔符的列表绑定(bind)到 DOM AngularJS

android - 不确定将哪个 View 用于一键式可扫描界面

android - Picasso 的 GridView 无法加载图像

c# - 由 = 和 != 分割的正则表达式

c# - 如何在 Xamarin Forms 中维护 ListView 项的下载进度

c# - 如何使用 lambda 表达式更新属性?

android - recyclerview适配器android中的数据绑定(bind)?

javascript - 商店更新后 ExtJS 网格不刷新