【问题标题】:Set DetailsView as selected row of GridView将 DetailsView 设置为 GridView 的选定行
【发布时间】:2010-05-10 17:22:07
【问题描述】:

我正在创建一个 GridView/DetailsView 页面。 I have a grid that displays a bunch of rows, when a row is selected it uses a DetailsView to allow for Insert/Update.

我的问题是链接这些的最佳方式是什么?我不想再次访问 Web 服务,我需要的所有数据都在选定的网格视图行中。我基本上有 2 个共享相同“DataObjectTypeName”的独立数据源,第一个数据源检索数据,另一个执行 CRUD。

将 Selected Grid View 行传输到 Details View 的最佳方法是什么?我是否必须手动处理插入/更新事件并自己调用数据源?

有没有办法将这两者联系起来,使它们使用相同的数据源?

  <asp:GridView ID="gvDetails" runat="server" DataKeyNames="ID, Code"
                DataSourceID="odsSearchData" >
   <Columns>
        <asp:BoundField DataField="RowA" HeaderText="A" SortExpression="RowA" />
        <asp:BoundField DataField="RowB" HeaderText="B" SortExpression="RowB" />
        <asp:BoundField DataField="RowC" HeaderText="C" SortExpression="RowC" />



    ....Code...

 <asp:DetailsView ID="dvDetails" runat="server" DataKeyNames="ID, Code"
                DataSourceID="odsCRUD" GridLines="None" DefaultMode="Edit" AutoGenerateRows="false"
                Visible="false" Width="100%">
         <Fields>
            <asp:BoundField DataField="RowA" HeaderText="A" SortExpression="RowA" />
           <asp:BoundField DataField="RowB" HeaderText="B" SortExpression="RowB" />
           <asp:BoundField DataField="RowC" HeaderText="C" SortExpression="RowC" />

...

【问题讨论】:

    标签: c# asp.net objectdatasource


    【解决方案1】:

    执行此操作的标准方法是将 griview 的选定项作为您已连接到详细信息视图的 objectdatasource 的控制参数。我可能不会太担心检索已有数据的开销,除非您要迎合连接速度如此之慢的用户,以至于您想不惜一切代价避免往返网络服务器。

    如果您真的想避免这种情况,您可以使用 javascript/jquery 将数据从网格视图中提取出来,然后通过 ajax 调用进行插入/更新。不过这需要更多的编码。

    【讨论】:

      【解决方案2】:

      这是一个非常古老的线程,但如果有人像我一样来到这里寻找答案,一个简单的解决方案是将此函数添加到您的代码中:

      (请注意,这仅在 GridView 中的行与 DetailsView 中的条目匹配时才有效。)

      protected void GridView1_OnSelectedIndexChanged(object sender, EventArgs e)
      {
           DetailsView1.SetPageIndex(GridView1.SelectedIndex);
      }
      

      并修改 GridView 和 DetailsView 以包含这些设置:

      <asp:GridView ... OnSelectedIndexChanged="GridView1_OnSelectedIndexChanged" ... >
      <asp:DetailsView ... AllowPaging="True" ... >
      

      这将使 DetailsView 中的选定页面与 GridView 中的选定索引匹配。

      如果您不希望用户在 DetailsView 中使用分页进行导航,您可以隐藏 DetailsView 属性中的分页选项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        • 1970-01-01
        • 2014-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多