首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据从中继器插入数据库

将数据从中继器插入数据库
EN

Stack Overflow用户
提问于 2013-08-24 23:10:24
回答 3查看 5.1K关注 0票数 0

我的问题已经有了很多答案,但问题是,有很多糟糕的答案,我必须是一个天才才能弄清楚什么答案会对我有帮助。让我们谈谈重点。我的问题很简单,我有一个repeater,其中包括两个textboxes

代码语言:javascript
复制
txtQuestion
txtAnswer

我有一个绑定方法

代码语言:javascript
复制
   List<SessionQuestion> questions = new List<SessionQuestion>();

其中包含了我的问题,将它们绑定到txtQuestion

关于17条问题(Bazinga!!)因此,我想在txtAnswer中回答这个问题,然后按下按钮将其保存到数据库中。我使用multi-tier体系结构,所以我想要最重要的方法将数据从我的17 textbox中保存到我的表中。我的桌子有这个结构。

代码语言:javascript
复制
[SessionQuestionId]  [SessionId]  [Question]  [Answer].

我的代码片段:

代码语言:javascript
复制
<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>

我的代码片段后面:

代码语言:javascript
复制
    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)
{

}

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-09 18:53:17

您可以这样做,我刚刚演示了从中继器获取值的方法,您可以根据您的需要进一步修改它。

代码语言:javascript
复制
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
}
票数 4
EN

Stack Overflow用户

发布于 2013-08-25 02:28:22

没有答案是很好的,但您可以选择ajax路线,也可以按照本文详细说明对来自中继器的命令参数的响应:

http://www.webcodeexpert.com/2013/04/how-to-bind-edit-update-and-delete-data.html#.Uhlq3VTD-t8

票数 0
EN

Stack Overflow用户

发布于 2013-10-09 18:59:14

你最好的选择是使用jquery+PageMethods。例如,有这样一个类

代码语言:javascript
复制
public class QuestionAnswer
{
string txtQuestion{get;set;}
string txtAnswer{get;set;}
}

在.cs代码上创建一个PageMethods,如下所示:

代码语言:javascript
复制
[WebMethod]
public static void SaveAnswers(QuestionAnswer[] answers)
{
    ....
}

更改您的.aspx如下:

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18424074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档