【问题标题】:Multiple DataKeyNames in Master Detail Gridview主从网格视图中的多个 DataKeyNames
【发布时间】:2009-08-07 21:19:30
【问题描述】:

此代码允许您在 Oracle 数据库中搜索表名。然后当您选择一行时,它会将所选表的所有列放在第二个网格视图中。

如果我只使用一个 DatakeyName -“Table_Name”,则下面的代码有效,但如果它们存在,它将显示具有不同所有者的相同表名,这不是我想要的。我想根据两个字段提取详细信息 - Table_Name 和 Owner。

我不知道如何让详细信息部分与两个 datakeyNames 一起使用。

 <asp:Label ID="lblTitleSrchOracleTab" runat="server" Text="Search For A Table In Oracle"></asp:Label>
        <br /><br />
        <asp:Label ID="lblOracleTableName" runat="server" Text="Oracle Table Name"></asp:Label>
        <asp:TextBox ID="txtOracleTableName" runat="server"></asp:TextBox>
        <asp:Button ID="btnOracleTableName" runat="server" Text="Search" 
             />
        <br /><br /> 
    <asp:GridView ID="gvOracleTableName" runat="server" CssClass="mGrid" 
            AutoGenerateSelectButton="True" AutoGenerateColumns="False" 
                DataSourceID="sdsOracleTableName" DataKeyNames="Owner,Table_Name" >
            <Columns>
                <asp:BoundField DataField="OWNER" HeaderText="OWNER" SortExpression="OWNER" />
                <asp:BoundField DataField="TABLE_NAME" HeaderText="TABLE_NAME" 
                    SortExpression="TABLE_NAME" />
                <asp:BoundField DataField="NUM_ROWS" HeaderText="NUM_ROWS" 
                    SortExpression="NUM_ROWS" />
                <asp:BoundField DataField="TABLESPACE_NAME" HeaderText="TABLESPACE_NAME" 
                    SortExpression="TABLESPACE_NAME" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="sdsOracleTableName" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
            ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT Owner, Table_name, Num_Rows, Tablespace_name
    FROM all_tables
    WHERE trim(upper(table_name)) LIKE trim(upper('%' || :TableName || '%'))">
            <SelectParameters>
                <asp:ControlParameter ControlID="txtOracleTableName" Name="TableName" 
                    PropertyName="Text" />
            </SelectParameters>
        </asp:SqlDataSource>
        <br /><br />
        <asp:GridView ID="gvSelectedTableColumns" runat="server" CssClass="mGrid"
            AutoGenerateColumns="False" DataSourceID="sdsgvSelectedTableColumns">
            <Columns>
                <asp:BoundField DataField="OWNER" HeaderText="OWNER" SortExpression="OWNER" />
                <asp:BoundField DataField="TABLE_NAME" HeaderText="TABLE_NAME" 
                    SortExpression="TABLE_NAME" />
                <asp:BoundField DataField="COLUMN_NAME" HeaderText="COLUMN_NAME" 
                    SortExpression="COLUMN_NAME" />
                <asp:BoundField DataField="DATA_TYPE" HeaderText="DATA_TYPE" 
                    SortExpression="DATA_TYPE" />
                <asp:BoundField DataField="DATA_LENGTH" HeaderText="DATA_LENGTH" 
                    SortExpression="DATA_LENGTH" />
                <asp:BoundField DataField="NULLABLE" HeaderText="NULLABLE" 
                    SortExpression="NULLABLE" />
            </Columns>
            <SelectedRowStyle BorderColor="Red" Font-Bold="True" />
        </asp:GridView>
        <asp:SqlDataSource ID="sdsgvSelectedTableColumns" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 


            ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT Owner, table_name, column_name, Data_Type, Data_Length, Nullable 
    FROM all_tab_columns 
    WHERE trim(upper(Owner)) =trim(upper(:SelectedOwner)) AND
    trim(upper(table_name)) =trim(upper(:SelectedTableName)) 
    ">
            <SelectParameters>
                <asp:ControlParameter ControlID="gvOracleTableName" Name="SelectedOwner" 
                    PropertyName="SelectedValue" />
                <asp:ControlParameter ControlID="gvOracleTableName" DefaultValue="" 
                    Name="SelectedTableName" PropertyName="SelectedValue" />
            </SelectParameters>
        </asp:SqlDataSource>

【问题讨论】:

    标签: asp.net oracle


    【解决方案1】:

    你不能扩展 where 子句吗?

    所以

    from all_tables where ... and owner = 'MYOWNER'
    

    select from user_tables instead of all_tables. 
    

    【讨论】:

      【解决方案2】:

      原来如此

      WHERE trim(upper(Owner)) =trim(upper(:SelectedOwner)) AND
      trim(upper(table_name)) =trim(upper(:SelectedTableName)) 
      

      我的问题是,当您使用 sqlDataSource 向导将参数连接到 gridview 控件时,它不允许您选择将其绑定到 gridview 的哪个数据键。

      【讨论】:

        【解决方案3】:

        我终于想通了。你不能用 Mighty Mouse 它——它需要实际的代码!特别是 gridview_SelectedIndexChanged 事件。

        我是这样做的。

          protected void gvOracleTableName_SelectedIndexChanged(object sender, EventArgs e)
                {
                    string SelectedOwner;
        
                    SelectedOwner = gvOracleTableName.SelectedRow.Cells[1].Text ;
        
                    string SelectedTableName;
                    SelectedTableName = gvOracleTableName.SelectedRow.Cells[2].Text;
        
                    lblTest.Text = SelectedOwner + " " + SelectedTableName;
        
        
        
        
        
                    string strConn, strSQL;
                    strConn = @"";
                    strSQL = @"SELECT Owner, table_name, column_name, Data_Type, Data_Length, Nullable FROM all_tab_columns WHERE trim(upper(Owner)) =trim(upper(:SelectedOwner)) AND trim(upper(table_name)) =trim(upper(:SelectedTableName))";
                    using (OracleConnection cn = new OracleConnection(strConn))
                    {
                        OracleCommand cmd = new OracleCommand(strSQL, cn);
        
                        cmd.Parameters.AddWithValue(":SelectedOwner", SelectedOwner);
                        cmd.Parameters.AddWithValue(":SelectedTableName", SelectedTableName);
        
                        cn.Open();
        
                        OracleDataReader rdr = cmd.ExecuteReader();
        
                        gvSelectedTableColumns.DataSource = rdr;
                        gvSelectedTableColumns.DataBind();
        
                        cn.Close();
                    }
        
                }
        

        【讨论】:

          猜你喜欢
          • 2017-02-22
          • 1970-01-01
          • 1970-01-01
          • 2023-04-02
          • 2016-07-26
          • 2014-06-22
          • 1970-01-01
          • 2020-09-28
          • 1970-01-01
          相关资源
          最近更新 更多