下面是我写的程序,实现的功能是点击子DATALIST中的按钮,实现添加一条回复,回复是根据主题不同有不同的回复,现在的问题是我点击按钮,它每次存储的都是第二个TEXTBOX里的值,望高手帮我解决一下!谢谢!
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ForumList.aspx.cs" Inherits="ForumList" %><%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit.HTMLEditor"
    TagPrefix="cc2" %>
<%@ Import Namespace="Model" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </cc1:ToolkitScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <asp:datalist ID="Datalist1" runat="server" DataKeyField="tId" 
                onitemdatabound="Datalist1_ItemDataBound">
            <ItemTemplate>
                <table>
                <tr>
                    <td><%# Eval("title") %></td>
                    <td>
                    <asp:Button ID="Button1" runat="server" Text="Button" />
                    </td>
                    <td><%# Eval("tPublishTime")%></td>
                    <td>
                        <%# Eval("uId")%>
                    </td>
                    <td>
                        
                        <asp:Label ID="lbltid" Visible="false" runat="server" Text='<%# Eval("tId")%>'></asp:Label></td>
                </tr>
                <tr>
                    <td colspan="5">
                        <asp:Panel ID="Panel1" runat="server">
                           
                            <asp:DataList ID="DataList2" runat="server" 
                                >                               
                               <ItemTemplate>
                               <table>
                                   <tr>
                                        <td><%# Eval("rContents")%></td>
                                        <td><%# Eval("rPublishTime")%></td>
                                        <td><%# Eval("uId")%></td>
                                        <td>
                                            <asp:Label ID="lblrTid" runat="server" Text='<%# Eval("tId")%>' Visible="false"></asp:Label></td>
                                   </tr>
                               </table>
                               </ItemTemplate>
                               <SeparatorTemplate><hr /></SeparatorTemplate>
                            </asp:DataList>
                            <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox><br />
                            <asp:Button ID="Button2" runat="server" Text="Button" onclick="Button2_Click" />
                            <%--<asp:LinkButton ID="LinkButton1" runat="server" CommandName="reply" 
                                onclick="LinkButton1_Click">回复</asp:LinkButton>--%>
                        </asp:Panel> 
                     </td>                                 
                </tr>
               </table>
                <cc1:CollapsiblePanelExtender ID="CollapsiblePanelExtender1" runat="server" TargetControlID="Panel1" CollapseControlID="Button1" ExpandControlID="Button1">
                </cc1:CollapsiblePanelExtender>
            </ItemTemplate>
            <SeparatorTemplate><hr /></SeparatorTemplate>
        </asp:datalist>
        </ContentTemplate>
        </asp:UpdatePanel>                     
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    下面是后台代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Data.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Configuration;
    using Model;public partial class ForumList : System.Web.UI.Page
    {
        ReplyDAL replyDAL1;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //LocalDataDataContext _dataContent = new LocalDataDataContext(ConfigurationManager.ConnectionStrings["SQLcon"].ToString());                       //List<_topic> tops = (from t in _dataContent._topics select t).ToList();            //_topic top = tops[1];            //List<_topic> ts = new List<_topic>();            //ts.Add(top);            //this.Datalist1.DataSource = ts;            //int id = 2;            //List<_reply> replys = _dataContent._replies.Where(r => r.tId == id).ToList<_reply>();            BindData();            
            }
        }    private void BindData()
        {
            TopicDAL topicDAL = new TopicDAL();
            List<_topic> topics = topicDAL.GetTopics();
            Datalist1.DataSource = topics;
            Datalist1.DataBind();
        }
        protected void Datalist1_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
                DataList datalist = (DataList)e.Item.FindControl("DataList2");
                Label label=(Label)e.Item.FindControl("lbltid");
                TextBox textbox = (TextBox)e.Item.FindControl("TextBox1");
                string tid = label.Text.ToString();
                int ctid = Convert.ToInt32(tid);
                ReplyDAL replyDAL = new ReplyDAL();
                List<_reply> replies = replyDAL.GetReply(ctid);
                datalist.DataSource = replies;
                datalist.DataBind();
            }
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            replyDAL1 = new ReplyDAL();
            _reply reply = new _reply();
            for (int i = 0; i < Datalist1.Items.Count;i++ )
            {
                TextBox text = (TextBox)Datalist1.Items[i].FindControl("TextBox1");
                if(text.Text.ToString()!=null){
                    reply.rContents = text.Text.ToString();
                    break;
                }
            }
            int rtid = 2;
            reply.rPublishTime = DateTime.Now;
            reply.tId = rtid;
            reply.uId = 3;
            replyDAL1.save(reply);
            BindData();
        }
        
    }