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

发布于 2024-07-09 12:22:21 字数 1139 浏览 8 评论 0原文

我正在开发一个多用途页面,我们不想将多个网格添加到同一页面,而是想在页面中使用单个 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 所需的动态显示能力。

I am working on a multi-purpose page and rather than adding multiple grids to the same page we wanted to use a single GridView to the page, and on Page_Init add the needed columns, and set the respective DataSourceID.

So to do this, we have something like the following in the aspx, the codebehind in the Page_Init is very simple adding a few columns then setting the DataSourceID property of the GridView.

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>

The object data source is there and working as the first page load triggers without any issues at all. However, as soon as you click on a page button, the grid disappears from the page? Any ideas?

I would just use a DataGrid but it doesn't have the desired dynamic display abilities for the HyperLinkColumn.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

墟烟 2024-07-16 12:22:22

听起来你正在做类似的事情

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

如果是这样的话 - 那么你需要删除检查并始终生成列(我还建议禁用数据网格的视图状态)

It sounds like you're doing something like

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

If that's the case - then you need to remove the check and always generate the columns (I'd also suggest disabling viewstate for the datagrid)

冷情妓 2024-07-16 12:22:22

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

try the page load event instead of page init

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文