动态生成DataTable绑定至DataList一例

Default.aspx:

程序代码 程序代码
<asp:DataList ID="DataList1" runat="server" OnCancelCommand="DataList1_Cancel" OnDeleteCommand="DataList1_Delete" OnEditCommand="DataList1_Edit" OnUpdateCommand="DataList1_Update" DataKeyField="ID">
    <ItemTemplate>
        <div style="background-color:Red;"><%# Eval("id")%>,<%# Eval("sitename")%>,<%# Eval("url")%><asp:Button ID="Button1" CommandName="edit" runat="server"
                Text="Edit" /><asp:Button ID="Button2" CommandName="delete" runat="server" Text="Delete" /></div>
    </ItemTemplate>
    <SeparatorTemplate>
        <hr style="height:1px;" />
    </SeparatorTemplate>
    <EditItemTemplate>
        <div><asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("sitename") %>'></asp:TextBox><asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("url") %>'></asp:TextBox>
            <asp:Button
                ID="Button7" CommandName="update" runat="server" Text="Update" /><asp:Button ID="Button8" CommandName="cancel" runat="server"
                    Text="Cancel" /></div>
    </EditItemTemplate>
</asp:DataList>


Default.aspx.cs:

程序代码 程序代码
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            DataColumn dc;
            DataRow dr;

            //---------------------添加字段----------------

            //建立字段1
            dc = new DataColumn();
            dc.DataType = System.Type.GetType("System.Int32");
            dc.ColumnName = "id";
            dc.AutoIncrement = true;//标识
            dc.AutoIncrementSeed = 1;//标识种子
            dc.AutoIncrementStep = 1;//标识递增量
            dt.Columns.Add(dc);
            //建立字段2
            dc = new DataColumn();
            dc.DataType = System.Type.GetType("System.String");
            dc.ColumnName = "sitename";
            dc.AllowDBNull = true;
            dt.Columns.Add(dc);
            //建立字段3
            dc = new DataColumn();
            dc.DataType = System.Type.GetType("System.String");
            dc.ColumnName = "url";
            dc.AllowDBNull = true;
            dt.Columns.Add(dc);
            //设置主键
            DataColumn[] newdc = new DataColumn[1];//可设置多个字段为主键
            newdc[0] = dt.Columns["id"];
            dt.PrimaryKey = newdc;

            //---------------------添加记录----------------

            //记录1
            dr = dt.NewRow();
            dr["sitename"] = "尚网";
            dr["url"] = "http://www.jjshang.com/";
            dt.Rows.Add(dr);
            //记录2
            dr = dt.NewRow();
            dr["sitename"] = "木子屋";
            dr["url"] = "http://www.mzwu.com/";
            dt.Rows.Add(dr);
            //记录3
            dr = dt.NewRow();
            dr["sitename"] = "网易";
            dr["url"] = "http://www.126.com/";
            dt.Rows.Add(dr);

            //----把表添加到DataSet并绑定到DataList----
            ds.Tables.Add(dt);
            ds.Tables[0].TableName = "HomePage";
            Session["ds"] = ds;
            BindData();
        }
    }
    private void BindData()
    {
        ((DataSet)Session["ds"]).Tables["HomePage"].DefaultView.Sort = "id desc";
        DataList1.DataSource = ((DataSet)Session["ds"]).Tables["HomePage"].DefaultView;
        DataList1.DataBind();
    }
    protected void DataList1_Cancel(object source, DataListCommandEventArgs e)
    {
        DataList1.EditItemIndex = -1;
        BindData();
    }
    protected void DataList1_Delete(object source, DataListCommandEventArgs e)
    {
        int id = (int)DataList1.DataKeys[e.Item.ItemIndex];

        DataRow dr = ((DataSet)Session["ds"]).Tables["HomePage"].Rows[GetRow(id)];
        dr.Delete();

        DataList1.EditItemIndex = -1;
        BindData();
    }
    protected void DataList1_Edit(object source, DataListCommandEventArgs e)
    {
        DataList1.EditItemIndex = e.Item.ItemIndex;
        BindData();
    }
    protected void DataList1_Update(object source, DataListCommandEventArgs e)
    {
        string sitename = ((TextBox)e.Item.FindControl("TextBox1")).Text;
        string url = ((TextBox)e.Item.FindControl("TextBox2")).Text;
        int id = (int)DataList1.DataKeys[e.Item.ItemIndex];

        DataRow dr = ((DataSet)Session["ds"]).Tables["HomePage"].Rows[GetRow(id)];
        dr["sitename"] = sitename;
        dr["url"] = url;

        DataList1.EditItemIndex = -1;
        BindData();
    }
    private int GetRow(int id)
    {
        DataRow dr;
        for (int i = 0; i < ((DataSet)Session["ds"]).Tables["HomePage"].Rows.Count; i++)
        {
            dr = ((DataSet)Session["ds"]).Tables["HomePage"].Rows[i];
            if ((int)dr["id"] == id) return i;
        }
        return 0;
    }
}

原文地址:https://www.cnblogs.com/hateyoucode/p/1362796.html