Я разрабатываю веб-приложение в визуальной студии, которое отображает фотографии номеров и их имена из базы данных на одной странице, и кнопку скорости рядом с каждой комнатой. Все в дате.Как настроить индекс datalist в asp.net?
Затем, когда пользователь нажимает кнопку курса, изображение комнаты и его имя должно быть передано на страницу курса, но,
что происходит со мной в том, что если я нажимаю на любую кнопку только первое изображение комнаты и имя, отображаемое на странице курса: '(
Я думаю, что это соответствует с индексом datalist, но я не знаю, как с этим справиться !!
Что мне делать, чтобы исправить это?
Вот код
webform1.aspex
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="HotelG.WebForm1" EnableEventValidation="false" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="DataList1" runat="server" Width="615px" Height="439px" >
<ItemTemplate>
<table>
<tr>
<td><asp:Image ID="Img1" runat="server" ImageUrl=<%# Eval("Picture")%> Height="100" style="position: relative; top: 0px; left: 98px; width: 100" /> </td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<asp:Label ID="Label1" runat="server" Text=<%# Eval("Room_Type")%>></asp:Label>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><asp:Button ID="btn1" runat="server" Text="Rate" OnClick="Button1_Click" /></td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<br />
</div>
</form>
</body>
</html>
WebForm1 файл кода
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace HotelG
{
public partial class WebForm1 : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename=C:\Users\user\Desktop\database\Golden_Rose.mdf;Integrated Security = True; Connect Timeout = 30");
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
string sel = "select Room_Type , Picture from room_details";
SqlCommand cmd = new SqlCommand(sel, con);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
DataList1.DataSource = dt;
DataList1.DataBind();
con.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
foreach (DataListItem li in DataList1.Items)
{
Image img = (Image)li.FindControl("Img1");
Label lbl = (Label)li.FindControl("Label1");
string labeltext = lbl.Text;
string url = img.ImageUrl;
Session["type"] = labeltext;
Session["img"] = url;
Response.Redirect("WebForm2.aspx");
}
}
}
}
webform2 файл кода
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace HotelG
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["type"] != null)
{
Label1.Text = Session["type"].ToString();
Label5.Text = Session["type"].ToString();
}
if (Session["img"] != null)
{
Image1.ImageUrl = Session["img"].ToString();
Label4.Text = Session["img"].ToString();
}
}
}
}
@TimSchmelter правильный. Кроме того, вы не должны привязывать 'DataList' к каждой загрузке страницы. Рассмотрите возможность связывания его внутри '! IsPostBack'. –
@RahulSingh: упомянул об этом в моем ответе. Спасибо –