无法在代码隐藏中调用函数或访问转发器中使用的控制器
Can't call a function or access a controller which is used in a repeater, in codebehinde
我在网上搜索过,但没有找到适合我的问题的答案。
问题是,当我在 ASP:Repeater 中为我的 C# ASPX 网站使用文本框和按钮来更新 SQL 服务器 table 的列时,我可以'访问代码隐藏 (ASPX.CS) 页面中的文本框和按钮。但是我找到了一种方法来 "show" 下面 link 中的 ASP:Repeater 中的那些控制器(文本框和按钮),但我实际上不能使用它们来更新网站数据库。
Can't find control within asp.net repeater?
如果有人知道如何解决这个问题,我会很高兴,回复这个。
下面是演示问题的示例代码:
ASPX 页面
<asp:Repeater runat="server" ID="Commentha" >
<ItemTemplate>
<div id="comment list" style="direction: rtl; font-family: '2 Nazanin','Adobe Arabic'; font-size: large;">
<div id="Replys">
<%--ASP LABEL FOR SHOWING ALL REPLYS FOR THIS COMMENT--%>
</div>
<div id="ReplyTo">
<div id="RT_Text">Reply</div>
<div id="ReplyToThis">
<asp:TextBox runat="server" ID="Reply" MaxLength="119"></asp:TextBox>
<asp:Button runat="server" ID="Sendit" Text="Send" />
</div>
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
"Reply" 文本框和 "Sendit" 按钮是我所说的控制器。
而 SQL Table 有此列:
回复 nvarchar(120)
我实际上是在尝试制作一个 "Reply to a comment" 功能,类似于 Facebook 用于评论部分的 "reply" 按钮。
您需要查看与转发器关联的事件。特别是在 ItemCommand 上。下面是一个片段,可让您抓取文本框。
向按钮添加 CommandName 允许您使用 ItemCommand 事件处理程序将从它发出的请求分配给特定操作。
<asp:Button ID="Sendit" runat="server" Width="80px" Text="Send" CommandName="Send"/>
添加此事件处理程序。因此,当单击该按钮时,它将应用 if 语句中的逻辑。您可以使用 FindControl 在该行中获取控件。然后通过其对象变量访问它们。在本例中为 .txt。
protected void Commentha_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Send")
{
TextBox txt = e.Item.FindControl("Reply") as TextBox ;
string replyText = txt.Text;
// Do SQL
}
}
我在网上搜索过,但没有找到适合我的问题的答案。
问题是,当我在 ASP:Repeater 中为我的 C# ASPX 网站使用文本框和按钮来更新 SQL 服务器 table 的列时,我可以'访问代码隐藏 (ASPX.CS) 页面中的文本框和按钮。但是我找到了一种方法来 "show" 下面 link 中的 ASP:Repeater 中的那些控制器(文本框和按钮),但我实际上不能使用它们来更新网站数据库。
Can't find control within asp.net repeater?
如果有人知道如何解决这个问题,我会很高兴,回复这个。
下面是演示问题的示例代码:
ASPX 页面
<asp:Repeater runat="server" ID="Commentha" >
<ItemTemplate>
<div id="comment list" style="direction: rtl; font-family: '2 Nazanin','Adobe Arabic'; font-size: large;">
<div id="Replys">
<%--ASP LABEL FOR SHOWING ALL REPLYS FOR THIS COMMENT--%>
</div>
<div id="ReplyTo">
<div id="RT_Text">Reply</div>
<div id="ReplyToThis">
<asp:TextBox runat="server" ID="Reply" MaxLength="119"></asp:TextBox>
<asp:Button runat="server" ID="Sendit" Text="Send" />
</div>
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
"Reply" 文本框和 "Sendit" 按钮是我所说的控制器。
而 SQL Table 有此列:
回复 nvarchar(120)
我实际上是在尝试制作一个 "Reply to a comment" 功能,类似于 Facebook 用于评论部分的 "reply" 按钮。
您需要查看与转发器关联的事件。特别是在 ItemCommand 上。下面是一个片段,可让您抓取文本框。
向按钮添加 CommandName 允许您使用 ItemCommand 事件处理程序将从它发出的请求分配给特定操作。
<asp:Button ID="Sendit" runat="server" Width="80px" Text="Send" CommandName="Send"/>
添加此事件处理程序。因此,当单击该按钮时,它将应用 if 语句中的逻辑。您可以使用 FindControl 在该行中获取控件。然后通过其对象变量访问它们。在本例中为 .txt。
protected void Commentha_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Send")
{
TextBox txt = e.Item.FindControl("Reply") as TextBox ;
string replyText = txt.Text;
// Do SQL
}
}