Ahmed Sa3d Ответов: 4

Привязка ретранслятора из двух таблиц


Эй, друзья мои, у меня есть две таблицы Users &Services, и мой ретранслятор имеет поля из этих двух таблиц.

Как я могу связать этот ретранслятор с обоими столами ??

Примечание : связь между двумя таблицами: userId forgien key in Services table from Users table.
<asp:repeater runat="server" ID="rpServices">
<itemtemplate>
[Userphoto] [Username]    // these two fields from users table.
Introduce:
[ServiceName]
in
[ServiceField] in range [ServiceCost]  // these three fields from Services table.
</itemtemplate>



Мне нужен код, который свяжет ретранслятор с двумя таблицами ??

4 Ответов

Рейтинг:
28

Sandeep Singh Shekhawat

Пожалуйста, попробуйте выполнить следующий код.

1. Создайте ретранслятор (вы можете изменить дизайн, я использую таблицу для отображения данных)

<asp:Repeater ID="rpServices" runat="server">
    <HeaderTemplate>
    <table>
    <tr>
    <th>Userphoto</th>
    <th>Username</th>
    <th>ServiceName</th>
    <th>ServiceField</th>
    <th>ServiceCost</th>
    </tr>
    </HeaderTemplate>
    <ItemTemplate>
    <tr>
     <td><%# Eval("Userphoto")%></td>
     <td><%# Eval("Username")%></td>
     <td><%# Eval("ServiceName")%></td>
     <td><%# Eval("ServiceField")%></td>
     <td><%# Eval("ServiceCost")%></td>
    </tr>
    </ItemTemplate>
    <FooterTemplate>
    </table>
    </FooterTemplate>
    </asp:Repeater>


2. Создайте метод заполнения ретранслятора
private void RepeaterBind()
        {
            string connectionString = "Data Source=sandeepss-PC;Initial Catalog=CodeFirst;User ID=sa; Password=knowdev";
            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
            SqlCommand cmd = new SqlCommand(@"Select u.Userphoto,u.Username,
                                             s.ServiceName,s.ServiceField,
                                            s.ServiceCost FROM Users as u inner join Services as s on u.userId=s.userId", con);
            IDataReader dr = cmd.ExecuteReader();

            DataTable dt = new DataTable();
            dt.Load(dr);           
            rpServices.DataSource = dt;
            rpServices.DataBind();
           
        }


3. вызовите этот метод, где вы заполняете управление ретранслятором. Например я вызываю его на Page_Load

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                RepeaterBind();
            }
        }


Рейтинг:
1

Member 14634503

Решение 1 не сработало в моем проекте..


CHill60

Затем прокомментируйте это решение с помощью команды "есть вопрос или комментарий?" ссылка рядом с ним. Не публикуйте комментарии как "решения"

Рейтинг:
0

Dave Kreskowiak

Вы не привязываетесь к двум таблицам, вы привязываетесь к результату запроса, включающего эти две таблицы. Итак, каков ваш запрос на эти таблицы?


Рейтинг:
0

Dholakiya Ankit

почему вы связываете две таблицы вы когда-нибудь чувствовали, что a+b=c тогда в этом (a+b) результате идет к c в вашем сценарии результат будет идти к одному datatable use joins of sql и сделайте это

с уважением...:)