2

GridViewからいくつかのデータを既に取得している がありますSqlDataSource

GridViewには、並べ替えページング選択が許可されています。

をクリックすると、新しいクエリで新しいクエリをbutton作成DataSourceし、新しいクエリをこのグリッドに割り当ててから、このグリッドを更新するためDataSourceに使用.DataBind()しますが、その後、列を並べ替えることができません。

新しい DataSource を動的に作成する

SqlDataSource data = new SqlDataSource();
data.ConnectionString = SqlDataSource1.ConnectionString;
data.ProviderName = SqlDataSource1.ProviderName;
data.SelectCommand = "SELECT * FROM USERS";
GridView2.DataSourceID = "";
GridView2.DataSource = data;
GridView2.DataBind();

私は以下を使用しようとしました:

GridView2.AllowSorting = true;

それでもうまくいきませんでした。これは私が得るエラーです。

ここに画像の説明を入力

ここで何が欠けていますか?

4

2 に答える 2

0

DataSourceControl DataSource (つまり、SqlDataSource、ObjectDataSource) を使用せずに GridView コントロールで AllowPaging="true" または AllowSorting="true" を設定すると、次のエラーが発生します。

GridView コントロールのページを変更する場合:

The GridView 'GridViewID' fired event PageIndexChanging which wasn't handled.

列名をクリックして GridView コントロールの列を並べ替える場合:

The GridView 'GridViewID' fired event Sorting which wasn't handled.

GridView の DataSourceID プロパティを DataSourceControl DataSource に設定しなかったため、並べ替えとページングのためのイベント ハンドラーを追加する必要があります。

このSOの質問の回答が役立つ場合があります。

また、私は自分のプロジェクトでこのカスタム コントロールを使用したことがあります。リンクからライブラリをダウンロードして、カスタム GridViewEx コントロールを使用できます。それはうまくいきます。本物と同じように見えます:

<cc:GridViewEx ID="gv" runat="server" AllowPaging=True AllowSorting=True 
        OnDataSourceRequested="gv_DataSourceRequested" 
        AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name"  />
        ... 
    </Columns>
</cc:GrdiViewEx>
于 2013-08-09T10:34:14.700 に答える