[英]gridview findcontrol returning empty “”
我正在嘗試使用此代碼從 gridview 中的文本框中讀取
protected void Button1_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
string textBoxText = ((TextBox)row.FindControl("numTC")).Text;
Response.Write(textBoxText);
}
}
此代碼不斷返回“”(空)
知道為什么會這樣嗎?
謝謝
確保您沒有在頁面的 PostBack 上重新綁定 GridView。 這可能是問題所在。
編輯
確保綁定GridView的代碼在以下代碼中:
C#
if ( !Page.IsPostBack ){
// Code to bind the control
}
VB
If Not Page.IsPostBack Then
' Code to bind the control
End If
否則會發生什么是控件被“重建”並且值都丟失在 TextBox 的
更新:
出於測試目的,請嘗試執行 GridView1.DataBind(); 在您的方法開始時。
嘗試像這樣調試:
在 Button1_Click 方法的末尾設置斷點。
以調試模式 (F5) 運行該站點。
當執行在 Button1_Click 結束時停止時,打開位於屏幕底部的即時 Window。
在那里輸入:
GridView1.Rows 並查看它是否包含它應該包含的行數。
應該是這樣的:
System.Web.UI.WebControls.GridViewRowCollection} 計數:53 <-- 行數
如果它確實返回超過 0 行,則輸入:
GridView1.Rows[0].Controls 並查看它是否返回一行上正確數量的控件。
我可以使用 GridView1.Rows[2].Controls[n] 直接訪問一行上的控件,其中 n 是該行中控件的順序。
也嘗試 (TextBox)GridView1.Rows[0].FindControl("numTC") 看看它返回什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.