0
下面是ASPX控制動態文本框的FindControl是顯示空ASP.net
<asp:UpdatePanel ID="pnlAnswer2" runat="server" EnableViewState="false">
<ContentTemplate>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnNext" />
<asp:PostBackTrigger ControlID="btnPrevious" />
</Triggers>
</asp:UpdatePanel>
我使用動態表來顯示動態文本框。除了所有的文本框,我已經爲他們插入了動態ID。在這裏工作
private void LoadQuestion2(string questionSetID, int page)
{
int recPerPage = 5;
int fromRec = (page - 1) * recPerPage;
DataTable dtQuestion;
string sql = "SELECT * FROM SETUP_QUESTION WHERE QUESTIONSET_ID = '" + questionSetID + "' ORDER BY CAST(QUESTION_NO AS UNSIGNED) ASC LIMIT " + fromRec + "," + recPerPage;
dtQuestion = objDBInterface.getResults(sql);
foreach (DataRow row in dtQuestion.Rows)
{
CreateLabelQuestionNo(mag.nullDB2String(row, "QUESTION_NO"), mag.nullDB2String(row, "QUESTION_ID"), mag.nullDB2String(row, "QUESTIONSET_ID"));
}
}
private void CreateLabelQuestionNo(string questionNo, string questionid, string questionSetID)
{
TextBox txt = new TextBox();
txt.ID = "txtScore" + questionNo;
txt.Text = "1";
txt.CssClass = "txt_standard";
txt.TextMode = TextBoxMode.SingleLine;
txt.Style.Add("width", "50px");
txt.Attributes.Add("runat", "server");
Table tb = new Table();
tb.ID = "tbscore";
tb.Attributes.Add("runat", "server");
tb.BorderWidth = Unit.Pixel(0);
for (int i = 1; i <= 1; i++)
{
TableRow tr = new TableRow();
TableCell td3 = new TableCell();
td3.Controls.Add(txt);
td3.Style.Add("padding-top", "15px");
tr.Cells.Add(td3);
tb.Rows.Add(tr);
}
pnlAnswer2.ContentTemplateContainer.Controls.Add(tb);
}
對於動態文本框當前是用戶輸入,當按鈕保存的onclick文本框中無法找到控制始終顯示爲空。
private void SaveScore(string questionSetID, int page)
{
int recPerPage = 5;
int fromRec = (page - 1) * recPerPage;
DataTable dtQuestion;
string value = "";
string sql = "SELECT * FROM SETUP_QUESTION WHERE QUESTIONSET_ID = '" + questionSetID + "' ORDER BY CAST(QUESTION_NO AS UNSIGNED) ASC LIMIT " + fromRec + "," + recPerPage;
dtQuestion = objDBInterface.getResults(sql);
foreach (DataRow row in dtQuestion.Rows)
{
string textbox1 = "txtScore" + mag.nullDB2String(row, "QUESTION_NO");
TextBox tbox = pnlAnswer2.ContentTemplateContainer.FindControl(textbox1) as TextBox;
string insertInputSQL = "INSERT INTO QUESTION_SCORE_JUDGE VALUES (NULL, '"
+ Convert.ToDouble(tbox.Text) + "', NULL)";
objDBInterface.ExecSQL(insertInputSQL);
}
}
我能知道是什麼問題
動態控件需要重新創建每個頁面加載,幷包括一個回發。所以確保始終啓動'CreateLabelQuestionNo'。在這裏看到這個問題。 http://stackoverflow.com/questions/44040851/my-textbox-added-programmatically-in-code-behind-after-page-reload-losess-values/44041285#44041285 – VDWWD