2016-01-20 99 views
1

我在代码后面访问一个ASP元素的值时遇到了一些问题。ASP.NET无法从后面的代码访问ASP元素(用户控件)

基本上,在我的.ascx文件中,我有一个中继器和一个数据源。中继器从数据源把数据(这是一个数据库)为HTML表所示:

<asp:Repeater ID="Repeater2" runat="server" DataSourceID="SqlDataSource1"> 
    <HeaderTemplate> 
     <table id="VersionsTable"> 

    </HeaderTemplate> 

    <ItemTemplate> 
     <thead> 
     <tr> 
      <th id="id">ID</th> 
      <th id="date">Date</th> 
      <th id="name">Name</th> 
      <th id="message">Message</th> 
      <th id="delete">Delete</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td> <asp:TextBox ID="idfield" runat="server" value='<%# Eval("LeaveAMessageID") %>' /></td> 
      <td id="idfield1"><%# Eval("LeaveAMessageID") %></td> 
      <td id="datefield"><%# Eval("FormInserted") %></td> 
      <td id="namefield"><%# Eval("TextBoxControl") %></td> 
      <td id="messagefield"><%# Eval("TextAreaControl") %></td> 
      <td id="deletebutton"><asp:Button id="Button1" Text="Delete Message" onclick="Button1_Click" 
      runat="server"> </asp:Button></td> 
     </tr> 
    </tbody> 
    </ItemTemplate> 

    <FooterTemplate> 
     </table> 
    </FooterTemplate> 

</asp:Repeater> 

现在,我需要能够做的,就是从数据库中删除基于该表行ID为“idfield”的文本框中的值。

因此,当点击最后一列中的按钮时,记录将从数据库中删除。

中继器和表按预期工作,它们产生我想要的输出。但是,我似乎无法从代码隐藏文件中访问asp:textbox元素。

我的button1_Click方法是这样的:

public void Button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      //TextBox f = (TextBox)this.FindControl("idfield"); 
      //var msgID = /*Request.Form["idfield"];idfield.Value;*/Request["idfield"]; 
      //var msgID = Request.QueryString["idfield"]; 
      //var msgID = DataBinder.Eval(this, "idfield"); 
      var control = (WebUserControl2)LoadControl("~/Controls/WebUserControl2.ascx"); 
      var msgID = control.Repeater2.FindControl("idfield"); 
      //var msgID = this.FindControl("Repeater2", 0).FindControl("idfield", 0); 



      //Connect to database 

这部分代码如下之后的数据库连接和SQL语句的执行。在上面的代码部分中看到的所有内容都是我尝试访问该asp:TextBox元素的值,并且迄今为止没有成功。

所以我的问题是:我如何从后面的代码访问asp:TextBox元素?

回答

1

不完全是你问,但我认为这就是你要找的。按钮有一个CommandArgument属性,可用于存储要删除的记录的ID。这可以被添加到您的按钮,像这样:

<asp:Button id="Button1" Text="Delete Message" onclick="Button1_Click" 
     runat="server" CommandArgument="<%# Eval("LeaveAMessageID") %>"> 

而且从你点击的事件,像这样就可以访问:

public void Button1_Click(object sender, EventArgs e) 
{ 
    var id = ((Button)sender).CommandArgument; 
+1

谢谢rdans,这个工作就像一个魅力!我知道这不是我要求的,但它确实解决了我的问题,所以非常感谢。 – Sus

相关问题