использовать несколько запросов на выборку для извлечения данных для просмотра сетки - PullRequest
1 голос
/ 03 июля 2011

В .net 2008

Я хочу привязать данные к сетке, используя несколько запросов выбора причина в том, что я хочу, чтобы данные поступали из нескольких данных и мне нужно немного обработать данные, прежде чем отобразить их в виде сетки

пример (я не должен на самом деле это сделать)

У меня есть две таблицы: одна со столбцами uid и uname с именем udata другой со столбцами uid и unum с именем uinfo Теперь проблема в том, что я хочу, чтобы uid uname и unum были объединены сложной операцией и отображались в виде сетки эта сложная операция может быть выполнена только в C #, а не в T-SQL

Я в основном утверждаю, что один запрос не может извлечь данные

так как мне сделать это для вида сетки

Ответы [ 4 ]

0 голосов
/ 04 июля 2011

Попробуйте следующий код.

    <div>
        <asp:SqlDataSource ID="sds_udata" runat="server" 
            ConnectionString="<%$ ConnectionStrings:Local %>" 
            ProviderName="<%$ ConnectionStrings:Local.ProviderName %>" 
            SelectCommand="select * from udata" 
            </asp:SqlDataSource>
        <asp:SqlDataSource ID="sds_uninfo" runat="server" 
            SelectCommand="select * from uinfo" 
            ConnectionString="<%$ ConnectionStrings:Local %>" 
            ProviderName="<%$ ConnectionStrings:Local.ProviderName %>"></asp:SqlDataSource>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="sds_udata" AutoGenerateEditButton="True" ShowFooter="True" 
            AutoGenerateDeleteButton="True" 
            DataKeyNames="uid">
            <Columns>                
            <asp:TemplateField HeaderText="User ID" >
                <itemtemplate>
                    <asp:Label ID="uid" runat="server" Text='<%# Bind("uid") %>'></asp:Label>
                </itemtemplate>
                <edititemtemplate>
                    <asp:TextBox ID="txtuid" runat="server" Text='<%# Bind("uid") %>' Width="98%" MaxLength="6" ></asp:TextBox>
                </edititemtemplate>
                <footertemplate>
                   <asp:TextBox ID="txtNewuid" runat="server" Text='<%# Bind("uid") %>' Width="98%" MaxLength="6"></asp:TextBox>
                </footertemplate>
                <itemstyle width="80px" /> 
            </asp:TemplateField>
            <asp:TemplateField HeaderText="User Name" >
                <itemtemplate>
                    <asp:Label ID="uname" runat="server" Text='<%# Bind("uname") %>'></asp:Label>
                </itemtemplate>
                <edititemtemplate>
                    <asp:TextBox ID="txtuname" runat="server" Text='<%# Bind("uname") %>' Width="98%" MaxLength="6" ></asp:TextBox>

                </edititemtemplate>
                <footertemplate>
                   <asp:TextBox ID="txtNewuname" runat="server" Text='<%# Bind("uname") %>' Width="98%" MaxLength="6" ></asp:TextBox>

                </footertemplate>
                <itemstyle width="80px" /> 
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Custom Field" >
                <ItemTemplate>
                    <asp:Label ID="lblLocation" runat="server" Text='<%# LookupCustomeField(DataBinder.Eval(Container.DataItem, "uid"), DataBinder.Eval(Container.DataItem, "uname"), DataBinder.Eval(Container.DataItem, "unum")) %>'></asp:Label> 
                </ItemTemplate>                   
               <ItemStyle Width="25%" /> 
           </asp:TemplateField> 
            </Columns>
        </asp:GridView>
    </div>


    protected string LookupCustomeField(object uid, object uname, object unum)
    {
        string strUid, strUname, strUnum, result;
        if ((string.IsNullOrEmpty(uid.ToString())) || (string.IsNullOrEmpty(uname.ToString())) ||(string.IsNullOrEmpty(unum.ToString())))
            return null;

        strUid = uid.ToString();
        strUname = uname.ToString();
        strUnum = unum.ToString();
        result = strUid+ strUname+strUnum;            
        return result;
    }
0 голосов
/ 03 июля 2011

Просмотрите ваши DataTables и создайте другую таблицу данных для привязки к представлению таблицы.

0 голосов
/ 03 июля 2011

вы либо используете ADO.NET, чтобы возвратить DataSet с двумя DataTable с, либо просто join или union запросами и положением, а также идентификатором column как QueryType из bit типа и использования union и для первого запроса установите QueryType на 0, а для второго - 1, а затем в части C # просто взаимозависимость между ними, но QueryType.

Я предпочитаю DataSet с двумя таблицами

0 голосов
/ 03 июля 2011

Если сетка может отображать его, то вы не можете доказать, что «один запрос не может извлечь данные». СОЕДИНИТЕ ваши различные операторы выбора, убедившись, что типы данных столбцов совпадают. У вас также есть доступ к оператору конкатенации на сервере и различным функциям подстроки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...