![](/img/trans.png)
[英]How to pass data from page to user control and vise versa in asp.net C#?
[英]How to use user control multiple times on single page(Asp.net C#)
我正在制作一个用户控件。 此用户控件用于显示来自数据库的广告。 只是我们必须传递地点 id,它会从数据库中获取记录并显示在特定页面上。 它运行良好,但是当我在同一页面上多次拖动此用户控件时,它就无法正常运行。 意味着我为每个用户控件传递不同的不同地点 ID,但两个用户控件只占用一个地点 ID 并在两个用户控件中显示相同的内容
这是我使用的代码
public partial class Advertisment : System.Web.UI.UserControl
{
static int _Advertismentid;
#region Get Set Property
public int Placeid
{
get
{
return _Advertismentid;
}
set
{
_Advertismentid = value;
}
}
#endregion
#region Load Advertisment Function
public void FnLoadAdvetsiment()
{
DataTable dt = new cls_Advertisements().FnGetAdvertsimentContent(Convert.ToInt32(Placeid));
int i = 0;
DataView dv = new DataView();
if (dt.Rows.Count > Convert.ToInt32(Session["rowno"]))
{
i = Convert.ToInt32(Session["rowno"]);
ltrAdvertisment.Text = (dt.Rows[i]["Content"].ToString());
AdTimer.Interval = Convert.ToInt32(dt.Rows[i]["Timer"].ToString());
Session["rowno"] = Convert.ToInt32(Session["rowno"]) + 1;
}
else
{
Session["rowno"] = i = 0;
ltrAdvertisment.Text = dt.Rows[i]["Content"].ToString();
AdTimer.Interval = Convert.ToInt32(dt.Rows[i]["Timer"].ToString());
}
}
#endregion
#region Page Load Event
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FnLoadAdvetsiment();
if (Session["rowno"] == null)
{
Session["rowno"] = 0;
}
}
}
#endregion
#region Timer Tick Event
protected void Timer1_Tick(object sender, EventArgs e)
{
FnLoadAdvetsiment();
}
#endregion
}
我认为您的问题是两个广告都显示相同的内容。
这可能是因为您使用相同的会话变量来存储数据。尝试在 session 键前面加上控件的 id 或其他独特的东西,或者更好地尝试不确定 session 如果可以的话。
当您将变量声明为“静态”时,则在您的控件 class 的所有不同实例中仅引用该变量的单个实例。
实际上,您将“_Advertismentid”变量设置为的最后一个值对于所有控件都是相同的值。
将您的变量声明为;
int _Advertismentid;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.