Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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
如何将div传递给while循环,asp.net c#_C#_Jquery_Html_Asp.net_Facebook - Fatal编程技术网

如何将div传递给while循环,asp.net c#

如何将div传递给while循环,asp.net c#,c#,jquery,html,asp.net,facebook,C#,Jquery,Html,Asp.net,Facebook,我正在创建一个名为facebook的社交网站,但该网站的状态设置有错误,我使用以下代码发布状态。此代码在页面加载中 Label1.Text = Session["Email"].ToString(); if (!IsPostBack) { //load data string db = ""; db = ConfigurationManager.ConnectionStrings["RegistrationConnectionStr

我正在创建一个名为facebook的社交网站,但该网站的状态设置有错误,我使用以下代码发布状态。此代码在页面加载中

Label1.Text = Session["Email"].ToString();
    if (!IsPostBack)
    {
        //load data
        string db = "";
        db = ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(db);
        con.Open();
        try
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "SELECT Name,Status FROM [PhotoStatusProfile] WHERE Email = @Email";
            cmd.Parameters.AddWithValue("@Email", Session["Email"].ToString());
            cmd.Connection = con;
            SqlDataReader dr;
            dr = cmd.ExecuteReader();
            string status = "";
            string name = "";

            while (dr.Read())
            {


                System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
                Label nameLabel = new Label();
                status += dr["Status"].ToString();
                name += dr["name"].ToString();
                nameLabel.Text = name;
                Label statusLabel = new Label();
                statusLabel.Text = status;
                div.Controls.Add(nameLabel);

                div.Controls.Add(statusLabel);
                container.Controls.Add(div);


            }

            con.Close();
            }
我将值传递给一个名为container的div。 当我写了一个状态,说“嗨”,然后点击post按钮,但什么都没有发生,然后我刷新页面,它就有了 第二次我做同样的事打招呼

这是一个集装箱。这是一个div标签的名称

<div id="container" runat="server"> </div>
我想发布从下到下的状态,
有谁能告诉我,我应该怎么做来防止这种错误。Thaks

从我所看到的情况来看,您正在将div添加到容器中,
namelab
StatusLabel
添加到div中,每次迭代
DataReader
。可能这不是您的意图,您希望添加它们一次,因为您正在
status
存储status行的所有值

        while (dr.Read())
        {       
            status += dr["Status"].ToString();
            name += dr["name"].ToString();
        }

        System.Web.UI.HtmlControls.HtmlGenericControl div = new 
               System.Web.UI.HtmlControls.HtmlGenericControl("div");
        container.Controls.Add(div);

        Label nameLabel = new Label();
        nameLabel.Text = name;
        div.Controls.Add(nameLabel);

        Label statusLabel = new Label();
        statusLabel.Text = status;
        div.Controls.Add(statusLabel);
另外,在标签上添加一些ID也是个好主意我建议您始终放置标签和div,如果标签和div中没有值,则将其设置为可见false。

另外,若您动态添加控件,则始终在方法中进行

编辑:如果你想要什么(写在我的评论中),你需要一个转发器。请在中查看此教程


我建议您对代码进行以下重新分解

  • 页面中的以下if块之间提取代码\u Load
    ,并创建一个名为
    LoadData()
    的方法

    如果(!IsPostBack) { LoadData(); }

  • 然后在将新帖子保存到数据库后,在帖子按钮的单击事件中再次调用此
    LoadData()
    方法

  • 使用
    DIV
    s(我指的是nameLabel和statusLabel)代替标签来显示值

  • 还将以下样式添加到这些
    DIV
    s

    style=“float:左;”

  • 这就是在代码隐藏中添加它的方式

    div.Style.Add("float", "left");
    
    更新1

    下面是如何添加div而不是标签

    HtmlGenericControl divContainer = new HtmlGenericControl("div");
    
                HtmlGenericControl nameDiv = new HtmlGenericControl("div");
                // Not sure why you concatenate Name and Status here. I'll just use one value per each row
                // status += dr["Status"].ToString();
                // name += dr["name"].ToString();
                nameDiv.InnerText = dr["name"].ToString();
                nameDiv.Style.Add("float", "left");
                divContainer.Controls.Add(nameDiv);
    
                HtmlGenericControl statusDiv = new HtmlGenericControl("div");
                statusDiv.InnerText = dr["Status"].ToString();
                statusDiv.Style.Add("float", "left");
                divContainer.Controls.Add(statusDiv);
    
                container.Controls.Add(div);
    
    更新2

    既然您采用了@mybirthname解决方案(使用
    中继器
    ),我将根据div为您提供所需的设计

    <asp:Repeater runat="server" ID="Repeater1">
           <ItemTemplate>
                <%--This is your template--%>
                <div style="margin-top: 5px;">
                <div style="padding: 2px; border: 1px solid black; background-color:Silver; display:table; width:600px;">
                  <div style="float:left;">
                    <div style="padding: 4px">
                        <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/my-avatar.PNG" /> <%--Give the correct path to your image--%>
                    </div>
                  </div>
                  <div>
                    <div style="font-size: 16px; font-family: Arial, Helvetica, sans-serif; font-weight: bold; padding-top: 4px;">
                        <%#Eval("name") %>                    
                        <div style="float:right; font-size: 10px;">9:00 am</div> <%--If you need to have a time stamp for each entry make use of this div--%>
                    </div>
                    <div style="width:500px;"><%#Eval("Status") %></div>
                  </div>
                </div>
                </div>
                <%--End template--%>
        </ItemTemplate>
       </asp:Repeater>
    
    
    上午9点
    
    /OT祝您成功。尝试了类似的操作,但我不得不删除它,因为它没有启动:)我应该删除什么?发布按钮的单击事件中有什么内容?看看我的答案我应该在哪里创建这个LoadData()方法?我应该在页面加载方法中创建它吗??告诉我,我想把这些状态垂直发布到。但这些都是横向发布的?如何获取新行?如何在页面加载中创建另一个方法???它应该是页面代码隐藏中的私有方法。而且,按照其他的指示,你会得到你的帖子,他们的朋友。不使用标签来显示值,而是使用div(我指的是namelab和statusLabel),我应该代表创建Label namelab=new Label()创建div对象吗;这些?是的,这就是我的意思我想发布这些东西,我想垂直发布,我知道我应该使用div而不是label,但我不知道如何创建类似label的对象。帮助我,朋友,谢谢我想要朋友,当我发布这些时,这些应该像那样显示,你对此有代码吗?嘿,谢谢朋友,我应该使用repeater而不使用容器div吗?你能告诉我吗?@Prabath你应该用div。你可以放任何你想要的元素。仅为一个元素创建html标记,当您看到一切都正常时,将此标记放入repeater,然后再放入其他元素。中继器将为数据源中的每个记录乘以html。如果答案有帮助,您可以将其标记为正确。我在page_load上粘贴了上面的代码,但它说dataset不存在,@Prabath显然是因为您不从dataset中的数据库获取数据。你需要多写50-100行。首先,您需要编写查询来获取数据,检查SqlDataAdapter和方法Fill,这将在数据集中获取数据。之后,您将把这个数据集作为中继器的数据源。我把这个留给你。
    div.Style.Add("float", "left");
    
    HtmlGenericControl divContainer = new HtmlGenericControl("div");
    
                HtmlGenericControl nameDiv = new HtmlGenericControl("div");
                // Not sure why you concatenate Name and Status here. I'll just use one value per each row
                // status += dr["Status"].ToString();
                // name += dr["name"].ToString();
                nameDiv.InnerText = dr["name"].ToString();
                nameDiv.Style.Add("float", "left");
                divContainer.Controls.Add(nameDiv);
    
                HtmlGenericControl statusDiv = new HtmlGenericControl("div");
                statusDiv.InnerText = dr["Status"].ToString();
                statusDiv.Style.Add("float", "left");
                divContainer.Controls.Add(statusDiv);
    
                container.Controls.Add(div);
    
    <asp:Repeater runat="server" ID="Repeater1">
           <ItemTemplate>
                <%--This is your template--%>
                <div style="margin-top: 5px;">
                <div style="padding: 2px; border: 1px solid black; background-color:Silver; display:table; width:600px;">
                  <div style="float:left;">
                    <div style="padding: 4px">
                        <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/my-avatar.PNG" /> <%--Give the correct path to your image--%>
                    </div>
                  </div>
                  <div>
                    <div style="font-size: 16px; font-family: Arial, Helvetica, sans-serif; font-weight: bold; padding-top: 4px;">
                        <%#Eval("name") %>                    
                        <div style="float:right; font-size: 10px;">9:00 am</div> <%--If you need to have a time stamp for each entry make use of this div--%>
                    </div>
                    <div style="width:500px;"><%#Eval("Status") %></div>
                  </div>
                </div>
                </div>
                <%--End template--%>
        </ItemTemplate>
       </asp:Repeater>