2016-01-20 78 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

相關問題