【问题标题】:Can you change the DataSourceId of a Gridview dynamically?您可以动态更改 Gridview 的 DataSourceId 吗?
【发布时间】:2013-11-22 21:13:22
【问题描述】:

我在 asp.net 页面中有以下内容:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="DateToVisit" 
        DataSourceID="AccessYouthSchedule" AutoGenerateEditButton="True">
        <Columns>
            <asp:BoundField DataField="Observer" HeaderText="Observer" SortExpression="Observer" />
            <asp:BoundField DataField="DateToVisit" HeaderText="DateToVisit" ReadOnly="True" SortExpression="DateToVisit" />
            <asp:BoundField DataField="YouthClass" HeaderText="YouthClass" SortExpression="YouthClass" />
            <asp:BoundField DataField="DidVisitOccur" HeaderText="DidVisitOccur" SortExpression="DidVisitOccur" />
            <asp:BoundField DataField="IdForEmail" HeaderText="IdForEmail" SortExpression="IdForEmail" />
            <asp:CheckBoxField DataField="WeekBeforeNoticeSent" HeaderText="WeekBeforeNoticeSent" SortExpression="WeekBeforeNoticeSent" />
            <asp:CheckBoxField DataField="DayOfNoticeSent" HeaderText="DayOfNoticeSent" SortExpression="DayOfNoticeSent" />
            <asp:BoundField DataField="PlanToVisit" HeaderText="PlanToVisit" SortExpression="PlanToVisit" />
        </Columns>
</asp:GridView>
<asp:AccessDataSource ID="AccessYouthSchedule" runat="server" DataFile="~/App_Data/SundaySchool.mdb" 
        SelectCommand="SELECT Observer, [DateToVisit], [YouthClass], [DidVisitOccur], [IdForEmail], [WeekBeforeNoticeSent], [DayOfNoticeSent], [PlanToVisit] FROM [YouthSchedule]"
        UpdateCommand="UPDATE YouthSchedule SET Observer = @Observer, YouthClass = @YouthClass, DidiVisitOccur = @DidVisitOccur, IdForEmail = @IdForEmail,
                        WeekBeforeNoticeSent = @WeekBeforeNoticeSent, DayOfNoticeSent = @DayOfNoticeSent, PlanToVisit = @PlanToVisit WHERE DateToVisit = @DateToVisit">
</asp:AccessDataSource>

这很好用。但是,我还有其他我想使用的 asp:AccessDataSource:

<asp:AccessDataSource ID="AccessDoctrineEssentials" runat="server" DataFile="~/App_Data/SundaySchool.mdb" 
        SelectCommand="SELECT [DoctrineObserver1], [DoctrineObserver2], [EssentialsObserver], [DateToVisit] FROM [DoctrineAndEssentials]"
        UpdateCommand="UPDATE DoctrineAndEssentials SET DoctrineObserver1 = @DoctrineObserver, DoctrineObserver2 = @DoctrineObserver2, 
                        EssentialsObserver = @EssentialsObserver WHERE DateToVisit = @DateToVisit">
</asp:AccessDataSource>

由于这些“列”,我不能简单地设置 GridView1.DataSourceId 属性。有没有办法快速切换到我的其他 AccessDataSource?它们主要只是同一个数据库中的不同表。

【问题讨论】:

  • 不是很快。您需要构建多个网格并隐藏/显示它们,或者您还需要在代码中构建列。
  • 如何构建列?老实说,只有多个网格视图可能更容易......
  • 您可以使用GridView.Columns 访问器添加列,但我认为我会坚持使用多个网格。标记方法几乎可以肯定是一种更好且更易于维护的方法。
  • @MichaelPerrenoud - 我已经完成了你之前建议的事情。这不漂亮,也不容易,但它确实有效。

标签: c# asp.net .net gridview


【解决方案1】:

这里最简单的解决方案是使用多个网格视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2022-06-15
    • 2012-04-10
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多