【问题标题】:How can I Bind separate query to separate column in GridView Asp.net C#如何将单独的查询绑定到 GridView Asp.net C# 中的单独列
【发布时间】:2014-06-10 16:06:18
【问题描述】:

我正在开发与 Oracle 10.2.0.4 集成的 ASP.net 4.0

这是我的 GridView 及其 SqlDatasource 的代码

<asp:GridView ID="gvRegNumber" runat="server" AutoGenerateColumns="False" DataSourceID="DsRegNumberGrid"
            Width="100%" AllowPaging="True" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid"
            BorderWidth="3px" CellSpacing="2" ForeColor="Black" PageSize="3" 
            CssClass="mGrid" onrowcommand="gvRegNumber_RowCommand" >
            <Columns>
                <asp:BoundField DataField="Registration No." HeaderText="Registration No." SortExpression="Registration No." />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:BoundField DataField="Make" HeaderText="Make" SortExpression="Make" />
                <asp:BoundField DataField="Model" HeaderText="Model" SortExpression="Model" />
                <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
                <asp:BoundField DataField="From Date" HeaderText="From Date" SortExpression="From Date" />
                <asp:BoundField DataField="To Date" HeaderText="To Date" SortExpression="To Date" />
                         <asp:TemplateField>
                <EditItemTemplate>
                    <asp:ImageButton ID="imgbtnUpdate" CommandName="Update" runat="server" ImageUrl="~/Themes/Icons/edit_icon.png"
                        ToolTip="Update" Height="20px" Width="20px" />
                </EditItemTemplate>
                <HeaderTemplate>
                    <asp:Label ID="Edit" Text="Edit" runat="server"></asp:Label>
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:ImageButton ID="EditRow" CssClass="mGrid-edit" ImageUrl="~/Themes/Icons/edit_icon.png"
                        runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <HeaderTemplate>
                    <asp:Label ID="Delete" Text="Edit" runat="server"></asp:Label>
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:ImageButton ID="DeleteRow" CssClass="mGrid-delete" ImageUrl="~/Themes/Icons/delete_icon.png"
                        runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            </Columns>

        </asp:GridView>
        <asp:SqlDataSource ID="DsRegNumberGrid" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT &quot;fkEnumerationId&quot; AS &quot;Registration No.&quot;, &quot;Text&quot; AS &quot;Name&quot;, &quot;AdditionalValueText&quot; AS &quot;Make&quot;, &quot;AdditionalValue&quot; AS &quot;Model&quot;, &quot;IsActive&quot; AS &quot;Status&quot;, &quot;CreatedOn&quot; AS &quot;From Date&quot;, &quot;LastUpdatedOn&quot; AS &quot

;To Date&quot; FROM &quot;EnumerationValue&quot;">
    </asp:SqlDataSource>

我只想为我的网格中的单独列提供单独的数据源。 那可能吗?如果有,怎么做?

提前致谢。

【问题讨论】:

  • 您能描述一下您的需求的用例吗?为什么您想要来自不同数据源的列是没有意义的。即使是这样,您希望用户如何与这样一个网格进行交互?或者,您的意思是 master-detail 关系吗?
  • 我的网格中有 3 列相互依赖。问题是三列来自一个表。如果有不同的表格可用,或者我可以使用任何下拉列表或文本框,那将很容易。但它们本身就是专栏。如何在单个查询中检查它们?
  • EnumerationValue 是表名。假设 col 1、col 2 或 col 3 在网格中。如果 col1_ID=1 那么 col2_ID=3,现在如果 col2_ID=3 那么 col3_ID=5……就是这样的场景。
  • 请分享有关该表设计的一些信息以及您期望的示例输出。 (在您的问题本身中)。

标签: asp.net c#-4.0 gridview sqldatasource


【解决方案1】:

您可以在您的 SP 中执行此操作

select en1.text as 'Country', en2.text as 'City',en3.text as 'Region'  from
EnumValue en1, EnumValue en2, EnumValue en3
where en1.id = en2.[fkEnumeration] and en3.[fkEnumeration] = en2.id  and 
en1.id='yourid' ;

【讨论】:

    【解决方案2】:

    这是我从您的要求中理解的“您想要一个动态更改其列值的网格,或者您必须动态绑定网格,而不仅仅是通过数据库传入数据。” 在这种情况下,在页面加载事件中,您可以动态创建一个表格并添加您想要的任何控件。在这种情况下,您也可以添加事件(textChange、selectedindexchange 等)。 假设您有 10 个用户,并且您必须为每个用户获取地址。因此,您可能有第一列国家下拉列表,在第二列中您可能有一个州下拉列表,在第三列中您可能有一个城市下拉列表,并且所有这些都是运行时相互关联的。 如果您有这样的要求,那么我建议您使用动态表生成而不是网格。

    【讨论】:

      【解决方案3】:

      在你的存储过程中试试这个:

      declare @temp_tbl TABLE (North varchar(10), South varchar(10))
      insert into @temp_tbl TABLE(North)
      select Text from table_name where Text='North'
      insert into @temp_tbl(South)
      select Text from table_name where Text='South'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多