Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在单个页面上多次使用用户控件(Asp.net C#)_C#_Asp.net - Fatal编程技术网

如何在单个页面上多次使用用户控件(Asp.net C#)

如何在单个页面上多次使用用户控件(Asp.net C#),c#,asp.net,C#,Asp.net,我正在制作一个用户控件。 此用户控件用于显示数据库中的广告。 我们只需要传递位置id,它就会从数据库中获取记录并显示在特定页面上。 这是完美的工作,但当我拖动这个用户控制多次在同一页上,然后它就不完美的工作。 意味着im为每个usercontrol传递不同的位置id,但两个usercontrol只使用一个位置id,并在两个usercontrol中显示相同的内容 这是我使用的代码 public partial class Advertisment : System.Web.UI.UserContr

我正在制作一个用户控件。 此用户控件用于显示数据库中的广告。 我们只需要传递位置id,它就会从数据库中获取记录并显示在特定页面上。 这是完美的工作,但当我拖动这个用户控制多次在同一页上,然后它就不完美的工作。 意味着im为每个usercontrol传递不同的位置id,但两个usercontrol只使用一个位置id,并在两个usercontrol中显示相同的内容

这是我使用的代码

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
}

我想你的问题是两个广告都显示了相同的内容


这可能是因为您正在使用相同的会话变量来存储数据。尝试在会话键前面加上控件id或其他唯一的前缀,如果可以的话,最好不要确定会话。

将变量声明为“静态”时,控件类的所有不同实例中只引用该变量的一个实例

实际上,您将“_Advertismentid”变量设置为的最后一个值对于所有控件都是相同的值

将变量声明为

int _Advertismentid;

如何为每个控件填充
Placeid