0
である私は、ダイナミックテキストボックスを表示するには、動的テーブルを使用ダイナミックテキストボックスに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>
ASPXコントロールです。その横にあるテキストボックスには動的IDが挿入されています。ボタンは、テキストボックスコントロールを見つけることができないのonclick保存すると、ここでは、ダイナミックテキストボックスのために働く
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);
}
は、現在、ユーザが入力するためのものですされてヌルを示して常にあります。
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);
}
}
私は問題が
ダイナミックコントロールはすべてのページ読み込み時に再作成する必要があり、PostBackも含みます。だから、 'CreateLabelQuestionNo'が常に起動されるようにしてください。ここのこの質問を参照してください。 http://stackoverflow.com/questions/44040851/my-textbox-added-programmatically-in-code-behind-after-page-reload-losess-values/44041285#44041285 – VDWWD