我做了个留言板,用datalist来显示全部留言,在ItemTemple编辑状态下拉了个textbox用来绑定了留言的标题和拉了个button,想按了这个button以后就获得这条留言的textbox里标题的字符串。具体应该怎样做啊?因为我是初学者,希望高手们可以把代码写得详细点,谢谢。

解决方案 »

  1.   

    第一步:把BUTTON写进ItemTemple编辑状态(这个你应该会吧)
    然后设置在ASPX中设置BUTTON的属性 CommandName="edit"(为什么这么写呢,因为DATALIST中有有一个事件EDITCOMMAND,这个事件你在DATALIST的属性那里就能找到,像闪电的那个,这个事件会执行BUTTON按钮,至于为什么会执行,我也说不上来)
    编辑完肯定得有更新按钮了,这个按钮在EDITTEMPLE中,再设置BUTTON的属性 CommandName="update",同理这个会执行DATALIST中的UPDATECOMMAND

    第二步:双击DATALIST里的EDITCOMMAND(好象是什么写来的)到CS代码中,
        //点击编辑按钮时引发的命令
        protected void datalist控件名_EditCommand(object source, DataListCommandEventArgs e)
        {
            this.datalist.EditItemIndex = e.Item.ItemIndex;
        }
    //意思是,得到你要编辑的行
    第三步:双击DATALIST里的UPDATECOMMAND(好象是什么写来的)到CS代码中,
    protected void datalist控件名_UpdateCommand(object source, DataListCommandEventArgs e)
        {
     TextBox tb = (TextBox)this.datalist1.Items[e.Item.ItemIndex].FindControl("你的TEXTBOX名称")
    //代码意思就是说找到要编辑的行中的TEXTBOX控件
     string txt=tb.Text.ToString();
    }
      

  2.   

    第一步:把BUTTON写进ItemTemple编辑状态(这个你应该会吧)
    然后设置在ASPX中设置BUTTON的属性 CommandName="edit"(为什么这么写呢,因为DATALIST中有有一个事件EDITCOMMAND,这个事件你在DATALIST的属性那里就能找到,像闪电的那个,这个事件会执行BUTTON按钮,至于为什么会执行,我也说不上来)
    编辑完肯定得有更新按钮了,这个按钮在EDITTEMPLE中,再设置BUTTON的属性 CommandName="update",同理这个会执行DATALIST中的UPDATECOMMAND

    第二步:双击DATALIST里的EDITCOMMAND(好象是什么写来的)到CS代码中,
        //点击编辑按钮时引发的命令
        protected void datalist控件名_EditCommand(object source, DataListCommandEventArgs e)
        {
            this.datalist.EditItemIndex = e.Item.ItemIndex;
        }
    //意思是,得到你要编辑的行
    第三步:双击DATALIST里的UPDATECOMMAND(好象是什么写来的)到CS代码中,
    protected void datalist控件名_UpdateCommand(object source, DataListCommandEventArgs e)
        {
     TextBox tb = (TextBox)this.datalist1.Items[e.Item.ItemIndex].FindControl("你的TEXTBOX名称")
    //代码意思就是说找到要编辑的行中的TEXTBOX控件
     string txt=tb.Text.ToString();
    }
      

  3.   

    竟然飞楼了
    晕了
    卡一下不好意思我再补充一下
    在ItemTemple和EDITTEMPLE中的两个BUTTON按钮是不一个BUTTON按钮
    (在这里不推荐用BUTTON,而直接用<a href=""></a>,因为BUTTON按钮在这里毫无用处)在DATALIST的事件中(属性栏闪电图标那个)
    要在EDITCOMMAND里输入edit
    同理updatecommand里也要输入update
    这样才会响应你单击的事件输入完以后在事件右面双击
    就会进入CS代码
    然后按照上面的代码写就可以了
      

  4.   

    写了代码,慢了,道理就是二楼的~<%@ Page Language="C#" %>
    <%@ Import Namespace="System.Data" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">    DataTable dt = new DataTable();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                dt.Columns.Add("title");
                for (int i = 0; i < 10; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = "title" + i;
                    dt.Rows.Add(dr);
                }
                Session.Add("dt", dt);
                this.DataList1.DataSource = dt;
                this.DataList1.DataBind();
            }
            else
            {
                dt = (DataTable)Session["dt"];
            }
        }    protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
        {
            this.DataList1.EditItemIndex = e.Item.ItemIndex;
            this.DataList1.DataSource = dt;
            this.DataList1.DataBind();
        }    protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            this.Label1.Text = ((TextBox)e.Item.FindControl("txtTitle")).Text.Trim();
        }
    </script><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:Label ID="Label1" runat="server"></asp:Label>
        <asp:DataList ID="DataList1" runat="server" OnEditCommand="DataList1_EditCommand" OnUpdateCommand="DataList1_UpdateCommand">
            <ItemTemplate>
                <asp:Label ID="lblTitle" runat="server" Text="<%#Bind('title') %>"></asp:Label><asp:Button ID="btnEdit" runat="server" CommandName="Edit" Text="Edit" />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtTitle" runat="server" Text="<%#Bind('title') %>"></asp:TextBox><asp:Button ID="btnShowTitle" runat="server" Text="Show Title" CommandName="Update" />
            </EditItemTemplate>
        </asp:DataList>
        </div>
        </form>
    </body>
    </html>
      

  5.   

    asp.net夜话之八:数据绑定控件 
    在asp.net中所有的数据库绑定控件都是从BaseDataBoundControl这个抽象类派生的,这个抽象类定义了几个重要属性和一个重要方法:DataSource属性:指定数据绑定控件的数据来源,显示的时候程序将会从这个数据源中获取数据并显示。DataSourceID属性:指定数据绑定控件的数据源控件的ID, 显示的时候程序将会根据这个ID找到相应的数据源控件,并利用这个数据源控件中指定方法获取数据并显示。DataBind()方法:当指定了数据绑定控件的DataSource属性或者DataSourceID属性之后,再调用DataBind()方法才会显示绑定的数据。并且在使用数据源时,会首先尝试使用DataSourceID属性标识的数据源,如果没有设置DataSourceID时才会用到DataSource属性标识的数据源。也就是说DataSource和DataSourceID两个属性不能同时使用。数据绑定控件的DataSource控件属性必须是一个可以枚举的数据源,如实现了ICollection、IEnumerable或IListSource接口的类的实例。
    http://blog.csdn.net/zhoufoxcn/archive/2008/10/24/3134608.aspx