.NET网格视图的动态列和数据源

时间:2008-11-24 19:32:04

标签: asp.net gridview page-init

我正在开发一个多功能页面,而不是将多个网格添加到同一页面,我们希望在页面上使用单个GridView,并在Page_Init上添加所需的列,并设置相应的DataSourceID。

为了做到这一点,我们在aspx中有类似下面的内容,Page_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所需的动态显示能力。

2 个答案:

答案 0 :(得分:1)

尝试页面加载事件而不是页面初始化

答案 1 :(得分:1)

听起来你正在做像

这样的事情
If (!Page.IsPostBack)
{
   //create + add columns - set datasource etc
}

如果是这种情况 - 那么你需要删除检查并始终生成列(我还建议禁用数据网格的viewstate)