0

誰でも私を助けることができますか?RowEditing の機能を動作させることができたので、RowUpdating を実行しようとしています。私のグリッドビューのセットアップは、次のとおりです

<asp:GridView ID="CountryGridView" runat="server" AutoGenerateColumns="false" CssClass="mGrid" OnRowEditing="CountryGridView_RowEditing" OnRowCancelingEdit="CountryGridView_RowCancelingEdit" >
                    <Columns>
                        <asp:BoundField ReadOnly="true" DataField="i_SK_Accom" HeaderText="i_SK_Accom" Visible="false" />
                        <asp:BoundField ReadOnly="true" DataField="Accom_Code" HeaderText="Accom Code" />
                        <asp:BoundField ReadOnly="true" DataField="Accom_Name" HeaderText="Accom Name" />
                        <asp:BoundField DataField="OP49_Required" HeaderText="OP49 Required?" />
                        <asp:BoundField DataField="Weekly" HeaderText="Weekly" />
                        <asp:BoundField DataField="Daily" HeaderText="Daily" />
                        <asp:CommandField ShowEditButton="true" ButtonType="Image" EditImageUrl="~/Images/Edit.gif" UpdateImageUrl="~/Images/save.png" CancelImageUrl="~/Images/cancel.png" ControlStyle-CssClass="ImageButton" />
                    </Columns>
                </asp:GridView>

MS SQL のプリコンパイル済みストアド プロシージャのパラメータに更新される予定の列を RowUpdating が通過するようにしようとしています。通常の方法は以下のとおりですが、グリッドビューを機能させるのに苦労しています。

SqlCommand commEditConsultant = new SqlCommand("IFACE_JFA_ACCOM", conn.sbConn);
    commEditConsultant.CommandType = CommandType.StoredProcedure;

    try
    {
        commEditConsultant.Parameters.Add("@Statement", SqlDbType.VarChar).Value = "AccomUpdate";
        commEditConsultant.Parameters.Add("@Page", SqlDbType.VarChar).Value = "OP49";
        commEditConsultant.Parameters.Add("@PC_Username", SqlDbType.VarChar).Value = HttpContext.Current.User.Identity.Name.ToString();
        commEditConsultant.Parameters.Add("@Season_Name", SqlDbType.VarChar).Value = Season.Text;
        commEditConsultant.Parameters.Add("@i_SK_Accom", SqlDbType.VarChar).Value = Request["i_SK_Accom"].Trim().ToString();
        commEditConsultant.Parameters.Add("@OP49_Required", SqlDbType.VarChar).Value = ddl_OP49Required.SelectedItem.Value;
        commEditConsultant.Parameters.Add("@Weekly", SqlDbType.VarChar).Value = ddl_OP49Weekly.SelectedItem.Value;
        commEditConsultant.Parameters.Add("@Daily", SqlDbType.VarChar).Value = ddl_OP49Daily.SelectedItem.Value;
    }

上記で指定されたフィールドは、グリッドビューに必要なものと同じですが、グリッドビューのrRowEditing値を変数/パラメーターに入れてSQLCommandに渡すのに苦労しています。

興味のある ID:

  DataBinder - BindCountryGrid
  DataReader - CountryGridSelectReader
4

1 に答える 1

0

最終的にそれを解決しました:

以下を再センブルするために必要なコードビハインド:

protected void CountryGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            Label Textbox_Accom = (Label)gv_CountryGridView.Rows[e.RowIndex].FindControl("lbl_Accom_Code");
            Label Textbox_Accom_Name = (Label)gv_CountryGridView.Rows[e.RowIndex].FindControl("lbl_Accom_Name");
            DropDownList Textbox_OP49 = (DropDownList)gv_CountryGridView.Rows[e.RowIndex].FindControl("ddl_OP49");
            DropDownList Textbox_Weekly = (DropDownList)gv_CountryGridView.Rows[e.RowIndex].FindControl("ddl_Weekly");
            DropDownList Textbox_Daily = (DropDownList)gv_CountryGridView.Rows[e.RowIndex].FindControl("ddl_Daily");
            TextBox Textbox_FRRStartDate = (TextBox)gv_CountryGridView.Rows[e.RowIndex].FindControl("txt_FRRStartDate");

            SqlCommand commEditConsultant = new SqlCommand("IFACE_JFA_ACCOM", ConnJFA);
            commEditConsultant.CommandType = CommandType.StoredProcedure;

            commEditConsultant.Parameters.Add("@Statement", SqlDbType.VarChar).Value = "AccomGridUpdate";
            commEditConsultant.Parameters.Add("@Page", SqlDbType.VarChar).Value = "OP49";
            commEditConsultant.Parameters.Add("@PC_Username", SqlDbType.VarChar).Value = HttpContext.Current.User.Identity.Name.ToUpper().ToString();
            commEditConsultant.Parameters.Add("@Season_Name", SqlDbType.VarChar).Value = txt_Season.Text;
            commEditConsultant.Parameters.Add("@Accom_Code", SqlDbType.VarChar).Value = Textbox_Accom.Text;
            commEditConsultant.Parameters.Add("@i_FK_SeasonID", SqlDbType.VarChar).Value = Request["i_FK_SeasonID"].Trim().ToString();
            commEditConsultant.Parameters.Add("@OP49_Required", SqlDbType.VarChar).Value = Textbox_OP49.Text;
            commEditConsultant.Parameters.Add("@Weekly", SqlDbType.VarChar).Value = Textbox_Weekly.Text;
            commEditConsultant.Parameters.Add("@Daily", SqlDbType.VarChar).Value = Textbox_Daily.Text;
            commEditConsultant.Parameters.Add("@FRR_StartDate", SqlDbType.VarChar).Value = Textbox_FRRStartDate.Text;

            ConnJFA.Open();
            commEditConsultant.ExecuteNonQuery();
            gv_CountryGridView.EditIndex = -1;
            Error_Dashboard.Text = Textbox_Accom.Text + " - " + Textbox_Accom_Name.Text + " Updated Successfully!";
            ConnJFA.Close();
            BindCountryGrid();


        }
于 2013-11-01T13:02:10.750 に答える