0

私は1つのリピーターを持ち、 Assign_Subjectsテーブルからsubjectidとsubjectnameをバインドます...そして、各サブジェクト@btnInsert_Clickイベントで取得されたマークを挿入するための1つのテキストボックステンプレートを配置します.件名と一緒にマークを挿入したい...

リピーターコントロール内に(テキストボックス-MarksObtained列に)挿入されたマークを更新したい...編集テキストボックスのbtnUpdateとしてボタンを使用した....

.aspxページ

<div>
 <table border="0" width="600px" cellpadding="2" cellspacing="1" style="border: 1px solid maroon;">
            <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate>
                    <tr bgcolor="maroon">
                        <th>
                            Subject_Id
                        </th>
                        <th>
                            Subject_Name
                        </th>
                        <th>
                            Fill_Marks
                        </th>
                    </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td width="100">
                            <asp:TextBox ID="txtSubjectId" runat="Server" Text='<%#Eval("Subject_Id")%>'></asp:TextBox>
                        </td>
                        <td>
                            <asp:TextBox ID="txtSubjectName" runat="Server" Text='<%#Eval("Subject_Name")%>'></asp:TextBox>
                        </td>
                        <td>
                            <asp:TextBox ID="txtMarks" runat="server" ></asp:TextBox>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>
        </table>
        <asp:Button ID="btnInsert" runat="server" OnClick="btnInsert_Click" Text="Insert" />
        **<asp:Button ID="btnUpdate" runat="server" OnClick="btnUpdate_Click" Text="Insert" />**
    </div> 

コードビハインド - c#

   protected void btnInsert_Click(object sender, EventArgs e)
  {
      foreach (RepeaterItem repeaterItem in Repeater1.Items)
      {
          string subjectId = (repeaterItem.FindControl("txtSubjectId") as TextBox).Text.Trim();
          string subjectName = (repeaterItem.FindControl("txtSubjectName") as TextBox).Text.Trim();
          string marks = (repeaterItem.FindControl("txtMarks") as TextBox).Text.Trim();

          this.SaveData(subjectId, subjectName, marks);
      }
  }

 private void SaveData(string subjectId, string subjectName, string marks)
        {
            cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DbConnect"].ConnectionString);
            cn.Open();

            SqlCommand cmd = new SqlCommand("Insert into result(id,name,marks) values('"+subjectId+"','"+subjectName+"','"+marks+"')", cn);

            Repeater1.DataSource = cmd.ExecuteReader();

            //Display a popup which indicates that the record was successfully inserted

            Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Script", "alert('Successfuly Inserted. !!');", true);

            cn.Close();
            cmd.Connection.Close();
            cmd.Connection.Dispose();
        }

結果表に挿入

id     varchar(20)
name   varchar(20)
marks  varchar(20)

今の質問は、リピーターを介して更新するにはどうすればよいですか??? より感謝されたコードで説明...ありがとう

4

1 に答える 1

0

リピーター内のボタンは次のようになります.....

 <td>
    <asp:ImageButton ID="btnSave" runat="server"  
         ImageUrl="~/images/save.png" ToolTip="click to save record"  
         CommandName="SaveData" 
         OnClientClick="return confirm('Conform message before  saving')" />
</td>

次に、リピーター コントロールによって生成されたイベントをキャプチャするには、リピーターの ItemCommand イベントを使用します。

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
   // note that this is the command we assign to save button. 
   // we use it here to capture which button was clicked.
    if (e.CommandName == "SaveData")
    {
        TextBox txtFirstName = e.Item.FindControl("txtFirstName") as TextBox;
        string fname= txtFirstName.Text;

       // do somethig with your date here..

    }
}
于 2012-07-08T20:40:36.640 に答える