1

私は多目的ページに取り組んでおり、同じページに複数のグリッドを追加するのではなく、単一の GridView をページに使用し、Page_Init で必要な列を追加し、それぞれの DataSourceID を設定します。

これを行うには、aspx に次のようなものがあります。Pag​​e_Init の分離コードは非常に単純で、いくつかの列を追加してから、GridView の DataSourceID プロパティを設定します。

ASPX:

<asp:GridView ID="gvDisplay" runat="server" AutoGenerateColumns="false" CellPadding="5"
    width="100%" AllowPaging="true" PageSize="200" DataSourceID="wuProcessLogDataSource">
    <RowStyle CssClass="RowStyle" />
    <AlternatingRowStyle CssClass="AlternatingRowStyle" />
    <HeaderStyle CssClass="HeaderStyle" />  
</asp:GridView>
<asp:ObjectDataSource id="wuProcessLogDataSource" runat="server" EnablePaging="True" 
    SelectMethod="GetWUProcessLog" TypeName="Project.Objects.WUProcessLogDal"
    SelectCountMethod="GetWUProcessLogTotalRecords">
   <SelectParameters>
    <asp:QueryStringParameter QueryStringField="w" DefaultValue="0" Name="workunitId" />
   </SelectParameters>    
</asp:ObjectDataSource>

オブジェクト データ ソースがそこにあり、最初のページ ロード トリガーとして問題なく動作します。しかし、ページ ボタンをクリックするとすぐにグリッドがページから消えますか? 何か案は?

私は DataGrid を使用するだけですが、HyperLinkColumn に必要な動的表示機能がありません。

4

2 に答える 2

1

のようなことをしているようですね

If (!Page.IsPostBack)
{
   //create + add columns - set datasource etc
}

その場合は、チェックを外して常に列を生成する必要があります (データグリッドのビューステートを無効にすることもお勧めします)。

于 2009-04-03T15:12:54.173 に答える
1

ページ初期化の代わりにページ読み込みイベントを試してください

于 2008-11-24T19:41:01.417 に答える