如何将数据集值获取到c#中的自定义表中

本文关键字:自定义 获取 数据集 | 更新日期: 2023-09-27 18:20:53

这里我正在尝试将从数据库检索到的值转换为我的自定义表格式。现在我正在将值存储到数据集中。

 protected void Page_Load(object sender, EventArgs e)
    {
        String userID = Convert.ToString(Session["user_id"]);        
        if (string.IsNullOrEmpty(userID) == true)
        {            
            Response.Redirect("login.aspx");
        }
        try { 
            string scon="SERVER=localhost;DATABASE=bmtc;UID=root;";
            MySqlConnection con = new MySqlConnection(scon);
            String s = "select * from application";
            MySqlDataAdapter dat = new MySqlDataAdapter(s, con);
            DataSet ds = new DataSet();
            dat.Fill(ds,"tbl");
            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();
        }
        catch(Exception ex){
           // Label1.Text = ex.ToString();
    }
}

Asp代码:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
        GridLines="None">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <EditRowStyle BackColor="#999999" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#E9E7E2" />
        <SortedAscendingHeaderStyle BackColor="#506C8C" />
        <SortedDescendingCellStyle BackColor="#FFFDF8" />
        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>

我需要将每个单独的值保存在表中。像

<table class="custom-table" id="preview-table">
<tr><td>Name</td><td><% value1 %></td></tr>
<tr><td>Address</td><td><% value2 %></td></tr>
<tr><td>Phone</td><td><% value3 %></td></tr>
....
</table>

我该怎么做?

如何将数据集值获取到c#中的自定义表中

您可以使用listview

<asp:ListView ID="listview1" runat="server" ItemPlaceholderID="itemPlaceHolder1">
<LayoutTemplate>
    <table class="custom-table" id="preview-table">
        <tr>
            <th>
                Header1
            </th>
            <th>
                Header2
            </th>
            <th>
                Header3
            </th>
        </tr>
        <tr><asp:PlaceHolder runat="server" ID="itemPlaceHolder1"></asp:PlaceHolder></tr>            
    </table>
</LayoutTemplate>
<ItemTemplate>
    <td>
        <%# Eval("Column1") %>
    </td>
    <td>
        <%# Eval("Column2") %>
    </td>
    <td>
        <%# Eval("Column3") %>
    </td>
</ItemTemplate>
</asp:ListView>

服务器端代码:

protected void Page_Load(object sender, EventArgs e)
    {
        String userID = Convert.ToString(Session["user_id"]);        
        if (string.IsNullOrEmpty(userID) == true)
        {            
            Response.Redirect("login.aspx");
        }
        try { 
            string scon="SERVER=localhost;DATABASE=bmtc;UID=root;";
            MySqlConnection con = new MySqlConnection(scon);
            String s = "select * from application";
            MySqlDataAdapter dat = new MySqlDataAdapter(s, con);
            DataSet ds = new DataSet();
            dat.Fill(ds,"tbl");
            listview1.DataSource = ds.Tables[0];
            listview1.DataBind();
        }
        catch(Exception ex){
           // Label1.Text = ex.ToString();
    }
}

欲了解更多信息,请访问以下链接

listView示例,listView示例2

正如我的评论中所提到的,ASP.NET Gridview控件无论如何都会在浏览器中呈现为Html表,因此它们不需要单独定义自定义表。现在,默认情况下,gridview的AutoGenerateColumns属性是true,所以如果您只是用程序绑定数据(就像现在所做的那样),它将呈现一个表。

如果您不想显示任何特定的列,那么不要从DB中获取它,或者将AutoGenerateColumns属性设置为false,并为每列添加BoundField。

尽管您当前的代码存在一些问题,但首先您应该只在初始获取请求时绑定数据,即不要在每次回发后绑定数据:-

protected void Page_Load(object sender, EventArgs e)
    {
       //code to get user_id
       If(!PostBack)
       {
           //code to bind gridview.
       }
  }

除此之外,您应该将连接字符串存储在Web.Config文件中。您应该考虑使用using语句来处理昂贵的数据库相关对象。