簡體   English   中英

ASP.NET無法從背后的代碼訪問ASP元素(用戶控制)

[英]ASP.NET cannot access asp element from code behind (User Control)

我在從后面的代碼訪問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元素?

不完全是您的要求,但我認為這是您想要的。 按鈕具有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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM