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元素?
謝謝rdans,這個工作就像一個魅力!我知道這不是我要求的,但它確實解決了我的問題,所以非常感謝。 – Sus