ASP.NET无法从后面的代码访问asp元素(用户控件)

时间:2016-01-20 09:25:58

标签: c# html 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 个答案:

答案 0 :(得分: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;