我现在在做一个留言板,显示页面那里在Repeater里镶嵌了几个控件,然后再用findcontrol索引里面控件的ID却始终找到为null,哪位高手知道哪里出错了?
这是前台代码:<body>
<form id="form1" runat="server">
<div>
<asp:LinkButton ID="LinkButton3" runat="server" Visible="false"><a href="leaveword.aspx">我要留言 </a></asp:LinkButton>
<asp:LinkButton ID="LinkButton1" runat="server" Visible="false"><a href="memberlogin.aspx">登录 </a></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" Visible="false"><a href="login.aspx">注册</a></asp:LinkButton>
<br />
<br />
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<table id="table1" runat="server" class="style4">
<tr>
<td class="style4">
标题:<%# DataBinder.Eval(Container.DataItem,"title") %> </td>
<td>
<%# DataBinder.Eval(Container.DataItem,"name") %>于<%# DataBinder.Eval(Container.DataItem,"date") %>发表</td>
</tr>
<tr>
<td colspan="2">
留言:<%# DataBinder.Eval(Container.DataItem,"word") %></td>
</tr>
<tr>
<td colspan="2">
<asp:HyperLink ID="Button1" Visible="true" runat="server" NavigateUrl='<%#"?act=1&id="+Eval("id")%>' >查看回复</asp:HyperLink>
<asp:HyperLink ID="Button3" Visible="false" runat="server" NavigateUrl='<%#"?act=2&id="+Eval("id")%>'>收起回复</asp:HyperLink>
</td>
</tr>
<tr>
<td>
<asp:Panel runat="server" ID="Panel1" visible="false">
<table id="table2" runat="server" class="style4" >
<tr>
<td>
<asp:TextBox ID="TextBox1" runat="server" Height="41px" TextMode="MultiLine" Width="1005px"></asp:TextBox></td>
</tr>
<tr>
<td>
<asp:Button ID="Button2" runat="server" Text="回复" onclick="Button2_Click" CommandArgument = '<%# DataBinder.Eval(Container.DataItem,"id") %>' CommandName="Reply"/></td>
</tr>
<tr>
<td>
<asp:Repeater ID="Repeater2" runat="server" >
<ItemTemplate>
<table id="table3" runat="server" class="style4">
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem,"name") %>:<%# DataBinder.Eval(Container.DataItem,"word") %>(<%# DataBinder.Eval(Container.DataItem,"date") %>)
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</table>
</asp:Panel> </td>
</tr>
</table>
<br />
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:leavewordConnectionString4 %>"
SelectCommand="SELECT * FROM [leaveword]"></asp:SqlDataSource>
</div>
</form>
</body>
这是后台代码:public partial class show : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
//int index = ((RepeaterItem)(sender as HyperLink).Parent).ItemIndex;
Panel Panel1 = (Panel)(this.Repeater1.FindControl("Panel1"));
HyperLink Button1 = (HyperLink)(this.Repeater1.FindControl("Button1"));
HyperLink Button3 = (HyperLink)(this.Repeater1.FindControl("Button3"));
Repeater Repeater2 = (Repeater)(this.Repeater1.FindControl("Repeater2")); if (Session["membername"] == null)
{
LinkButton1.Visible = true;
LinkButton2.Visible = true;
}
else
{
LinkButton3.Visible = true;
Button1.Visible = true;
} string act = Request.QueryString["act"];
string leavewordid = Request.QueryString["id"];
string str1 = "Data Source=(local);Initial Catalog=leaveword;integrated security=True";
switch (act)
{
case "1":
SqlConnection conn = new SqlConnection(str1);
conn.Open();
DataSet ds2 = new DataSet();
string str2 = "Select leavewordid From [reply] Where leavewordid='" + leavewordid + "'";
SqlDataAdapter da2 = new SqlDataAdapter(str2, conn);
da2.Fill(ds2, "t1");
Repeater2.DataSource = ds2.Tables["t1"];
Repeater2.DataBind(); Panel1.Visible = true;
Button1.Visible = false;
Button3.Visible = true;
conn.Close();
break;
case "2":
Panel1.Visible = false;
Button1.Visible = true;
Button3.Visible = false;
break;
default:
Panel1.Visible = false;
Button1.Visible = false;
Button3.Visible = false;
break;
} }
} protected void Button2_Click(object sender, EventArgs e)
{
string str = "Data Source=(local);Initial Catalog=leaveword;integrated security=True";
SqlConnection conn = new SqlConnection(str);
conn.ConnectionString = str;
conn.Open();
string leavewordid = Request.QueryString["id"];
TextBox TextBox1 = (TextBox)Repeater1.Items[0].FindControl("TextBox1");
string TextBox1_text = TextBox1.Text;
string name = Session["membername"].ToString();
string date = System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
string ip = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null
&& HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty)
? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
: HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
string sql = "Insert into [reply] (leavewordid,name,date,ip,word) values ('" + leavewordid + "','" + name + "','" + date + "','" + ip + "','" + TextBox1_text + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
Response.Write("<script language='javascript'>alert('回复成功!')</script>");
Response.Redirect("show.aspx");
}}
求教~~
这是前台代码:<body>
<form id="form1" runat="server">
<div>
<asp:LinkButton ID="LinkButton3" runat="server" Visible="false"><a href="leaveword.aspx">我要留言 </a></asp:LinkButton>
<asp:LinkButton ID="LinkButton1" runat="server" Visible="false"><a href="memberlogin.aspx">登录 </a></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" Visible="false"><a href="login.aspx">注册</a></asp:LinkButton>
<br />
<br />
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<table id="table1" runat="server" class="style4">
<tr>
<td class="style4">
标题:<%# DataBinder.Eval(Container.DataItem,"title") %> </td>
<td>
<%# DataBinder.Eval(Container.DataItem,"name") %>于<%# DataBinder.Eval(Container.DataItem,"date") %>发表</td>
</tr>
<tr>
<td colspan="2">
留言:<%# DataBinder.Eval(Container.DataItem,"word") %></td>
</tr>
<tr>
<td colspan="2">
<asp:HyperLink ID="Button1" Visible="true" runat="server" NavigateUrl='<%#"?act=1&id="+Eval("id")%>' >查看回复</asp:HyperLink>
<asp:HyperLink ID="Button3" Visible="false" runat="server" NavigateUrl='<%#"?act=2&id="+Eval("id")%>'>收起回复</asp:HyperLink>
</td>
</tr>
<tr>
<td>
<asp:Panel runat="server" ID="Panel1" visible="false">
<table id="table2" runat="server" class="style4" >
<tr>
<td>
<asp:TextBox ID="TextBox1" runat="server" Height="41px" TextMode="MultiLine" Width="1005px"></asp:TextBox></td>
</tr>
<tr>
<td>
<asp:Button ID="Button2" runat="server" Text="回复" onclick="Button2_Click" CommandArgument = '<%# DataBinder.Eval(Container.DataItem,"id") %>' CommandName="Reply"/></td>
</tr>
<tr>
<td>
<asp:Repeater ID="Repeater2" runat="server" >
<ItemTemplate>
<table id="table3" runat="server" class="style4">
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem,"name") %>:<%# DataBinder.Eval(Container.DataItem,"word") %>(<%# DataBinder.Eval(Container.DataItem,"date") %>)
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</table>
</asp:Panel> </td>
</tr>
</table>
<br />
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:leavewordConnectionString4 %>"
SelectCommand="SELECT * FROM [leaveword]"></asp:SqlDataSource>
</div>
</form>
</body>
这是后台代码:public partial class show : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
//int index = ((RepeaterItem)(sender as HyperLink).Parent).ItemIndex;
Panel Panel1 = (Panel)(this.Repeater1.FindControl("Panel1"));
HyperLink Button1 = (HyperLink)(this.Repeater1.FindControl("Button1"));
HyperLink Button3 = (HyperLink)(this.Repeater1.FindControl("Button3"));
Repeater Repeater2 = (Repeater)(this.Repeater1.FindControl("Repeater2")); if (Session["membername"] == null)
{
LinkButton1.Visible = true;
LinkButton2.Visible = true;
}
else
{
LinkButton3.Visible = true;
Button1.Visible = true;
} string act = Request.QueryString["act"];
string leavewordid = Request.QueryString["id"];
string str1 = "Data Source=(local);Initial Catalog=leaveword;integrated security=True";
switch (act)
{
case "1":
SqlConnection conn = new SqlConnection(str1);
conn.Open();
DataSet ds2 = new DataSet();
string str2 = "Select leavewordid From [reply] Where leavewordid='" + leavewordid + "'";
SqlDataAdapter da2 = new SqlDataAdapter(str2, conn);
da2.Fill(ds2, "t1");
Repeater2.DataSource = ds2.Tables["t1"];
Repeater2.DataBind(); Panel1.Visible = true;
Button1.Visible = false;
Button3.Visible = true;
conn.Close();
break;
case "2":
Panel1.Visible = false;
Button1.Visible = true;
Button3.Visible = false;
break;
default:
Panel1.Visible = false;
Button1.Visible = false;
Button3.Visible = false;
break;
} }
} protected void Button2_Click(object sender, EventArgs e)
{
string str = "Data Source=(local);Initial Catalog=leaveword;integrated security=True";
SqlConnection conn = new SqlConnection(str);
conn.ConnectionString = str;
conn.Open();
string leavewordid = Request.QueryString["id"];
TextBox TextBox1 = (TextBox)Repeater1.Items[0].FindControl("TextBox1");
string TextBox1_text = TextBox1.Text;
string name = Session["membername"].ToString();
string date = System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
string ip = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null
&& HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty)
? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
: HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
string sql = "Insert into [reply] (leavewordid,name,date,ip,word) values ('" + leavewordid + "','" + name + "','" + date + "','" + ip + "','" + TextBox1_text + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
Response.Write("<script language='javascript'>alert('回复成功!')</script>");
Response.Redirect("show.aspx");
}}
求教~~
解决方案 »
- 存这样的数,要用什么东西? 在线等
- 如何将textBOX中的一组数据添加到DataGridView,我使用的方法如下 但是只能添加一行 我想添加多行请指点
- 如果别人电脑上没sql 能附加mdf吗
- 正则表达式,正在分析“(?:\)*(|)”- ) 不足。
- 用户控件从再弹出一个窗口
- 在Windows 2003系统下如何打开端口1433
- 求SQL语句
- 在IE8下用过eWebEditor的来,请来看看
- 超简单问题,刚刚发错在ASP区了,试下就给
- How to make a ListView control display an item for a line?
- 插入数据返回增量的主键问题?
- 软件中点击按钮弹出相应的网页功能如何实现?
<asp:HyperLink ID="Button1" Visible="true" runat="server" NavigateUrl='<%#"?act=1&id="+Eval("id")%>' >查看回复</asp百度
HyperLink Button1 = (HyperLink)(this.Repeater1.FindControl("Button1"));
HyperLink Button3 = (HyperLink)(this.Repeater1.FindControl("Button3"));
Repeater Repeater2 = (Repeater)(this.Repeater1.FindControl("Repeater2"))
这样肯定找不到的
{
var _item = this.Repeater1.Items[i];
if (_item != null)
{
Panel Panel1 = (Panel)_item.FindControl("Panel1"); }
}这个找的,但在循环外面不能引用Panel1的值
using System.Web.UI;
using System.Data.SqlClient;
using System.Data;
using System.Web.UI.WebControls;
using System.Web;public partial class show : System.Web.UI.Page
{ protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
for (int i = 0; i < Repeater1.Items.Count; i++)
{
var _item1 = Repeater1.Items[i].FindControl("Panel1");
if (_item1 != null)
{ Panel Panel1 = (Panel)_item1; var _item2 = Repeater1.Items[i].FindControl("Button1");
if (_item2 != null)
{ HyperLink Button1 = (HyperLink)_item2;
var _item3 = Repeater1.Items[i].FindControl("Button3");
if (_item3 != null)
{ HyperLink Button3 = (HyperLink)_item3; var _item4 = Repeater1.Items[i].FindControl("Repeater2");
if (_item4 != null)
{
Repeater Repeater2 = (Repeater)_item4; if (Session["membername"] == null)
{
LinkButton1.Visible = true;
LinkButton2.Visible = true;
}
else
{
LinkButton3.Visible = true;
Button1.Visible = true;
} string act = Request.QueryString["act"];
string leavewordid = Request.QueryString["id"];
string str1 = "Data Source=(local);Initial Catalog=leaveword;integrated security=True";
switch (act)
{
case "1":
SqlConnection conn = new SqlConnection(str1);
conn.Open();
DataSet ds2 = new DataSet();
string str2 = "Select leavewordid From [reply] Where leavewordid='" + leavewordid + "'";
SqlDataAdapter da2 = new SqlDataAdapter(str2, conn);
da2.Fill(ds2, "t1");
Repeater2.DataSource = ds2.Tables["t1"];
Repeater2.DataBind(); Panel1.Visible = true;
Button1.Visible = false;
Button3.Visible = true;
conn.Close();
break;
case "2":
Panel1.Visible = false;
Button1.Visible = true;
Button3.Visible = false;
break;
default:
//Panel1.Visible = false;
//Button1.Visible = false;
//Button3.Visible = false;
break;
}
}
}
}
}
}
}
} protected void Button2_Click(object sender, EventArgs e)
{
string str = "Data Source=(local);Initial Catalog=leaveword;integrated security=True";
SqlConnection conn = new SqlConnection(str);
conn.ConnectionString = str;
conn.Open();
string leavewordid = Request.QueryString["id"];
TextBox TextBox1 = (TextBox)Repeater1.Items[0].FindControl("TextBox1");
string TextBox1_text = TextBox1.Text;
string name = Session["membername"].ToString();
string date = System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
string ip = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null
&& HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty)
? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
: HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
string sql = "Insert into [reply] (leavewordid,name,date,ip,word) values ('" + leavewordid + "','" + name + "','" + date + "','" + ip + "','" + TextBox1_text + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
Response.Write("<script language='javascript'>alert('回复成功!')</script>");
Response.Redirect("show.aspx");
}}
for (int i = 0; i < this.Repeater1.Items.Count; i++)
{
var _item = this.Repeater1.Items[i];
if (_item != null)
{
Panel1 = (Panel)_item.FindControl("Panel1"); }
}