我在用DatatList绑定数据源后(项模板),我还加入了编辑模板,
能不能想GridView那样,点击一下编辑进去编辑模式,点击一下取消就又回到原来的状态(想模板状态)

解决方案 »

  1.   

      你的想法不错,但是现在是实现不了的,除非你自己写啦。因为GridView实现是靠CommandField,而DataList里是没有这样的列的。
      纯属个看法,不对的还忘多多包涵……
      

  2.   

    DataList 编辑功能
    我随便写的列子 看看
     <form id="form1" runat="server">
        <div>
            <asp:DataList ID="DataList1" runat="server" DataKeyField="destinID" OnEditCommand="DataList1_EditCommand" OnCancelCommand="DataList1_CancelCommand" OnUpdateCommand="DataList1_UpdateCommand">
                <ItemTemplate>
                   <%# DataBinder.Eval(Container.DataItem,"destinName") %>
                   
                    <asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
                </ItemTemplate>
                <EditItemTemplate>
                <%# DataBinder.Eval(Container.DataItem,"destinName") %>
                    <asp:TextBox ID="TextBox1" runat="server" Width="41px" Text='<%#DataBinder.Eval(Container.DataItem,"destinName") %>'></asp:TextBox>
                    <%#DataBinder.Eval(Container.DataItem,"identityID") %>
                    <asp:TextBox ID="TextBox2" runat="server" Width="72px" Text='<%#DataBinder.Eval(Container.DataItem,"identityID") %>'></asp:TextBox>
                    <asp:Button ID="Button2" runat="server" CommandName="update" Text="更新" />
                    <asp:Button ID="Button3" runat="server" CommandName="cancel" Text="取消" />
                
                </EditItemTemplate>
            </asp:DataList></div>
        </form>cs 代码  
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Bind();
            }
        }
        protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
        {
            DataList1.EditItemIndex = e.Item.ItemIndex;
            Bind();
        }
        string connectionstring = "server=.;database=FlightManagement;Integrated Security=sspi";
        public void Bind()
        {
          
            SqlConnection conn = new SqlConnection(connectionstring);
            SqlDataAdapter Adapter = new SqlDataAdapter("select * from destinTable", conn);
            DataSet ds = new DataSet();
            Adapter.Fill(ds);
            DataList1.DataSource = ds.Tables[0].DefaultView;
            DataList1.DataBind();
        }
        protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)
        {
            DataList1.EditItemIndex = -1;
        }
        protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            string id = DataList1.DataKeys[e.Item.ItemIndex].ToString();
            TextBox tb1 =(TextBox) e.Item.FindControl("Textbox1");
            TextBox tb2 = (TextBox)e.Item.FindControl("TextBox2");
            string sql = "update destinTable set destinName='" + tb1.Text.ToString() + "',identityID='" + tb2.Text.ToString() + "'where destinID=" +id+ " ";
             SqlConnection conn = new SqlConnection(connectionstring);
             conn.Open();
            SqlCommand comm = new SqlCommand(sql, conn);
            comm.ExecuteNonQuery();
            Bind();
            conn.Close();
            DataList1.EditItemIndex = -1;
        }
    }应该是这样
    不知道能否达到要求