c# – 从动态文本框ASP.NET中获取价值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 从动态文本框ASP.NET中获取价值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4443字,纯文字阅读大概需要7分钟。
内容图文
![c# – 从动态文本框ASP.NET中获取价值](/upload/InfoBanner/zyjiaocheng/769/07a97238187e4ac481a63e21e5451258.jpg)
我想知道如何从asp.net文本框中获取值,该文本框是在asp:datalist中动态创建的.
我想将这些值重新插入数据库.
假设我们在datalist的网页上有以下输出. (每个问题都是一个asp:文本框)
Question 1
Answer 1
Answer 2
Update Button
Question 2
Answer 1
Answer 2
Update Button
Question 3
Answer 1
Answer 2
Update Button
例如:我想从问题2文本框中获取值,然后将值解析为我的数据库插入方法.
如何在数据列表中动态生成文本框,如何做到这一点?
我写了以下内容:
<asp:DataList runat="server" id="dgQuestionnaire" DataKeyField="QuestionID" CssClass="confirm">
<ItemTemplate>
<h3>Question <asp:Label ID="lblOrder" runat="server" Text='<%# Container.ItemIndex + 1 %>'></asp:Label></h3>
<asp:TextBox runat="server" ID="QuestionName" Text='<%# Eval("QuestionText") %>' CssClass="form"></asp:TextBox>
<asp:DataList ID="nestedDataList" runat="server">
<ItemTemplate>
<asp:TextBox ID="AnswerBox" runat="server" CssClass="form" Text='<%# Eval("AnswerTitle") %>' Width="300px"></asp:TextBox>
</ItemTemplate>
</asp:DataList>
<asp:Button runat="server" ID="updateName" CssClass="button_update" style="border: 0px;" onClick="UpdateQuestionName_Click" />
</ItemTemplate>
</asp:DataList>
这里的代码背后(抱歉长度)
protected void UpdateQuestionName_Click(object sender, EventArgs e)
{
int QuestionnaireId = (int)Session["qID"];
GetData = new OsqarSQL();
// Update question name
GetData.InsertQuestions(QuestionName.Text, QuestionnaireId);
} // End NewQNRButton_Click
public void BindParentDataList(int QuestionnaireID)
{
_productConn = new SqlConnection();
_productConnectionString += "data source=mssql.myurl.com; Initial Catalog=database_2;User ID=userid;Password=aba123";
_productConn.ConnectionString = _productConnectionString;
SqlCommand myCommand = new SqlCommand("GetQuestion", _productConn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add(new SqlParameter("@QUEST_ID", SqlDbType.Int));
myCommand.Parameters[0].Value = QuestionnaireID;
// check the connection state and open it accordingly.
_productConn.Open();
// Sql datareader object to read the stream of rows from SQL Server Database
SqlDataReader myDataReader = myCommand.ExecuteReader();
// Pass the Sql DataReader object to the DataSource property
// of DataList control to render the list of items.
dgQuestionnaire.DataSource = myDataReader;
dgQuestionnaire.DataBind();
// close the Sql DataReader object
myDataReader.Close();
// check the connection state and close it accordingly.
if (_productConn.State == ConnectionState.Open)
_productConn.Close();
// foreach loop over each item of DataList control
foreach (DataListItem Item in dgQuestionnaire.Items)
{
BindNestedDataList(Item.ItemIndex);
}
}
public void BindNestedDataList(int ItemIndex)
{
int QuestionID = Convert.ToInt32(dgQuestionnaire.DataKeys[ItemIndex]);
SqlCommand myCommand = new SqlCommand("GetAnswer", _productConn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add("@QUESTION_ID", SqlDbType.Int).Value = QuestionID;
// check the connection state and open it accordingly.
if (_productConn.State == ConnectionState.Closed)
_productConn.Open();
// Sql datareader object to read the stream of rows from SQL Server Database
SqlDataReader myDataReader = myCommand.ExecuteReader();
// findControl function to get the nested datalist control
DataList nestedDataList = (DataList)dgQuestionnaire.Items[ItemIndex].FindControl("nestedDataList");
nestedDataList.DataSource = myDataReader;
nestedDataList.DataBind();
// close the Sql DataReader object
myDataReader.Close();
// check the connection state and close it accordingly.
if (_productConn.State == ConnectionState.Open)
_productConn.Close();
}
当按下相应的按钮“updateName”时,如何获取文本框的值?
谢谢
解决方法:
你可以尝试做这样的事情(代码更新):
protected void UpdateQuestionName_Click(object sender, EventArgs e)
{
int QuestionnaireId = (int)Session["qID"];
GetData = new OsqarSQL();
//get the button that caused the event
Button btn = (sender as Button);
if (btn != null)
{
//here's you question text box if you need it
TextBox questionTextBox = (btn.Parent.FindControl("QuestionName") as TextBox);
// Update question name
GetData.InsertQuestions(questionTextBox.Text, QuestionnaireId);
//and in case you want more of the associated controls
//here's your data list with text boxes
DataList answersDataList = (btn.Parent.FindControl("nestedDataList") as DataList);
//and if answersDataList != null, you can use answersDataList.Controls to access the child controls, where answer text boxes are
}
} // End NewQNRButton_Click
这应该按你的意愿工作.
内容总结
以上是互联网集市为您收集整理的c# – 从动态文本框ASP.NET中获取价值全部内容,希望文章能够帮你解决c# – 从动态文本框ASP.NET中获取价值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。