【问题标题】:ASP NET SQL - for each row create a new divASP NET SQL - 为每一行创建一个新的 div
【发布时间】:2017-08-27 00:26:36
【问题描述】:

寻找一种解决方案来为 SQL Server 数据库表中的每一行创建一个包含其内容的新 div:

Dim com As SqlCommand = New SqlCommand("select Date,Title,Content from Log where Author = @Author", con)
com.Parameters.Add("@Author", SqlDbType.Char)
com.Parameters("@Author").Value = User.Identity.Name

Dim dt As DataTable = New DataTable()

For Each Datarow In dt.Rows
       //create New div with its content
Next

这个正在工作,但还不能用它的内容创建一个新的 div/table。

感谢任何帮助。

【问题讨论】:

  • 在 Web 窗体中执行此操作的常用方法是将 DataTable 绑定到某种控件,例如中继器。

标签: html asp.net sql-server vb.net foreach


【解决方案1】:
DataSet ds = new DataSet();
SqlDataAdapter da1 = new SqlDataAdapter("select Date,Title,Content from Log where Author = @Author", ConfigurationManager.ConnectionStrings["sasa"].ConnectionString);
 da1.Fill(ds);
 string makehtml = string.Empty;
//however when you have DataSet then you can iterate easily and cerate whatever you want
    for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
        makehtml += "<div><span>Date:</span> " + ds.Tables[0].Rows[i]["Date"] + " <span>Title:</span> " + ds.Tables[0].Rows[i]["Title"] + "< span > Content:</ span > " + ds.Tables[0].Rows[i]["Content"] + " </div>";
    }

请检查它是否有帮助。我不是 VB 专家,但是当您拥有 DataSet 时,您可以逐行遍历 DataSet 行并创建一个 div 或执行一些其他操作。 其他一些选择或好方法:

 <asp:ListView ID="lstVDataBind" runat="server">
                                    <LayoutTemplate>
                                        <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
                                    </LayoutTemplate>
                                    <ItemTemplate>
                                        <div class="col-md-12"><span>Date:</span><%#Eval("Date")%>
                                            <span>Title:</span><%#Eval("Title")%>< span > Content:</ span > <%#Eval("Content")%></div>
                                    </ItemTemplate>
                        </asp:ListView>

在后面的代码中,您可以将数据集作为数据源分配给 Listview:

lstVDataBind.DataSource = ds;
        lstVDataBind.DataBind();

您也可以使用中继器代替 Listview。 另一种你可以做同样事情的方法:

 <%-- statrt here --%>
            <% if (ds.Tables[0].Rows.Count > 0){
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {%>
            <div class="col-md-12">
                <div class="col-md-12"><span>Date:</span><%=ds.Tables[0].Rows[i]["Date"].ToString()%>
                <span>Title:</span><%=ds.Tables[0].Rows[i]["Title"].ToString()%><span> Content:</span><%=ds.Tables[0].Rows[i]["Content"].ToString()%></div>
            </div>
            <%}} %>
            <%-- Ends here --%>

此代码将在 aspx 页面中,但为此您必须公开您的数据集,以便轻松访问。

【讨论】:

  • 你知道如何将 css 样式应用于 div 吗?像这样
  • makehtml += "&lt;div class='panel-group'" css 样式不适用:/
  • css 会正常工作。要么您使用样式属性,要么您可以使用 css 类。比如:
  • @Luke 发送一个示例,然后我会准确理解您的 css 问题。如果 css 类不起作用,请尝试使用内联 css。
  • 这确实是一种在 Web 表单中向网页添加重复内容的糟糕方法。
【解决方案2】:
Dim com As SqlCommand = New SqlCommand("select Date,Title,Content from Log where Author = @Author", con)
com.Parameters.Add("@Author", SqlDbType.Char)
com.Parameters("@Author").Value = User.Identity.Name

Dim dt As DataTable = New DataTable()

Dim _div As New HtmlGenericControl("div")
Dim _label As New HtmlGenericControl("label") ' for example that content you want to display is the fullname, for my example i will use label tag
Dim _indx As Integer = 0
For Each row In dt.Rows
   _div  = New HtmlGenericControl("div")
   _div .ID = "div" & _indx.toString().trim
   _div .Attributes.Add("class", "your class that you want to add") ' optional only if you want
   _label = New HtmlGenericControl("label")
   _label.ID = "lbl" & _indx.toString().trim
   _label.InnerText = row("name of the field in your dt ex. fullname").toString().trim
   _div .Controls.Add(_label)
   _pnl1.Controls.Add(_div)
Next

.. In the design page

<body>
    <asp:Panel ID="pnl1" runat="server"> <!-- you can use panel to properly place your dynamic div -->

    </asp:Panel>


</body>

.. 希望这段代码对你有帮助

【讨论】:

    猜你喜欢
    • 2021-06-09
    • 2021-12-25
    • 2021-12-16
    • 2017-11-06
    • 1970-01-01
    • 2011-09-04
    • 2015-07-31
    • 1970-01-01
    • 2019-11-18
    相关资源
    最近更新 更多