我的问题已经有了很多答案,但问题是,有很多糟糕的答案,我必须是一个天才才能弄清楚什么答案会对我有帮助。让我们谈谈重点。我的问题很简单,我有一个repeater,其中包括两个textboxes
txtQuestion
txtAnswer我有一个绑定方法
List<SessionQuestion> questions = new List<SessionQuestion>();其中包含了我的问题,将它们绑定到txtQuestion。
关于17条问题(Bazinga!!)因此,我想在txtAnswer中回答这个问题,然后按下按钮将其保存到数据库中。我使用multi-tier体系结构,所以我想要最重要的方法将数据从我的17 textbox中保存到我的表中。我的桌子有这个结构。
[SessionQuestionId] [SessionId] [Question] [Answer].我的代码片段:
<table class="table responsive">
<tbody>
<asp:Repeater ID="questionRepeater" runat="server">
<ItemTemplate>
<tr class="">
<td>
<div class="control-group">
<label class="control-label">Queston <asp:Literal id="liteQuestionNum" runat="server" ></asp:Literal> : </label>
<div class="controls">
<asp:TextBox runat="server" ID="txtQ" Text='<%#Eval("Question") %>' ReadOnly="true" CssClass="span8">
</asp:TextBox>
</div>
</div>
<hr />
<div class="control-group">
<label class="control-label">Answer <asp:Literal id="liteAnserNum" runat="server" ></asp:Literal> : </label>
<div class="controls">
<asp:TextBox ID="txtAns" runat="server" CssClass="span8" TextMode="MultiLine">
</asp:TextBox>
</div>
</div>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table>我的代码片段后面:
private void BindRepeater()
{
List<SessionQuestion> questions = new List<SessionQuestion>();
questions.Add(new SessionQuestion { Question = "Question 1 etc.."});
questions.Add(new SessionQuestion { Question = "Question 2 etc.."});
.
.
.
.
questionRepeater.DataSource = questions;
questionRepeater.DataBind();
}
protected void btnSave_Click(object sender, EventArgs e)
{
}提前谢谢。
发布于 2013-10-09 18:53:17
您可以这样做,我刚刚演示了从中继器获取值的方法,您可以根据您的需要进一步修改它。
protected void btnSave_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in questionRepeater.Items)
{
TextBox Qbox = item.FindControl("txtQ") as TextBox;
TextBox Ansbox = item.FindControl("txtAns") as TextBox;
string Question = Qbox.Text;
string Answer = Ansbox.Text;
if (!string.IsNullOrEmpty(Answer))
{
//Perform your insert operation.
}
}
//Bind Repeater again if required
}发布于 2013-08-25 02:28:22
没有答案是很好的,但您可以选择ajax路线,也可以按照本文详细说明对来自中继器的命令参数的响应:
http://www.webcodeexpert.com/2013/04/how-to-bind-edit-update-and-delete-data.html#.Uhlq3VTD-t8
发布于 2013-10-09 18:59:14
你最好的选择是使用jquery+PageMethods。例如,有这样一个类
public class QuestionAnswer
{
string txtQuestion{get;set;}
string txtAnswer{get;set;}
}在.cs代码上创建一个PageMethods,如下所示:
[WebMethod]
public static void SaveAnswers(QuestionAnswer[] answers)
{
....
}更改您的.aspx如下:
<table class="table responsive">
<tbody>
<asp:Repeater ID="questionRepeater" runat="server">
<ItemTemplate>
<tr class="">
<td>
<div class="control-group">
<label class="control-label">Queston <asp:Literal id="liteQuestionNum" runat="server" ></asp:Literal> : </label>
<div class="controls">
<asp:TextBox runat="server" ID="txtQ" Text='<%#Eval("Question") %>' ReadOnly="true" CssClass="span8 question">
</asp:TextBox>
</div>
</div>
<hr />
<div class="control-group">
<label class="control-label">Answer <asp:Literal id="liteAnserNum" runat="server" ></asp:Literal> : </label>
<div class="controls">
<asp:TextBox ID="txtAns" runat="server" CssClass="span8 answer" TextMode="MultiLine">
</asp:TextBox>
</div>
</div>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
.....
don't forget to reference jquery
...
<script>
$('#<%=btnSave.ClientId%>').click(function(){
var answers = [];
$('.responsive tbody tr').each(function(){
answers.push({
txtQuestion:$('td .question').val(),
txtAnswer:$('td .answer').val()
});
});
PageMethods.SaveAnswers(answers);
return false;
});
</script>https://stackoverflow.com/questions/18424074
复制相似问题