下面是我写的程序,实现的功能是点击子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>
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();
}
}