0

このプロジェクトでは、ドキュメントを承認/拒否するためのドキュメント管理システムであるプロジェクトがあり、このプロジェクトから、ドキュメントを承認および拒否するためのspを作成します

ALTER procedure [dbo].[sprejectapprove]
        @UserID int,
        @DocID int,
        @ApproveType nvarchar(50)
as
    Insert into Approval(UserID,DocID,ApproveType)
    values(@UserID,@DocID,@ApproveType)

承認:

 ALTER procedure [dbo].[spinsertapprove]
     @UserID int,
     @DocID int,
     @ApproveType nvarchar(50)
 as
     Insert into Approval(UserID,DocID,ApproveType)
     values(@UserID,@DocID,@ApproveType)

コードは

protected void GrdFileApprove_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "_Approve")
    {
        //using (SqlConnection con = DataAccess.GetConnected())
        using (SqlConnection con = 
                 new SqlConnection(ConfigurationManager.ConnectionStrings["mydms"].ConnectionString))
        {
            try
            {
                int rowindex = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = (GridViewRow)     

            ((Control)e.CommandSource).NamingContainer;
                LinkButton Prove_Button =   
               (LinkButton)row.FindControl("BtnApprove");
                SqlCommand cmd = new SqlCommand("spinsertapprove", con);
                cmd.CommandType = CommandType.StoredProcedure;
                int result = cmd.ExecuteNonQuery();
                if (result != 0)
                {
                    GrdFileApprove.DataBind();
                }
            }

            catch 
            {
                apfi.Text = "Not Approve";
            }
            finally
            {
                con.Close();
            }
        }
    }


    else if (e.CommandName == "_Reject")
    {
        using (SqlConnection con = 
                    new SqlConnection(ConfigurationManager.ConnectionStrings["mydms"].ConnectionString))
        {
            try
            {
                int rowindex = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = (GridViewRow)
                ((Control)e.CommandSource).NamingContainer;
                LinkButton Prove_Button = (LinkButton)row.FindControl("Button1");
                SqlCommand cmd = new SqlCommand("sprejectapprove", con);
                cmd.CommandType = CommandType.StoredProcedure;
                int result = cmd.ExecuteNonQuery();
                if (result != 0)
                {
                    GrdFileApprove.DataBind();
                }
            }

            catch 
            {
                apfi.Text = "Rejct";
            }
            finally
            {
                con.Close();
            }
        }
    }
}

コードをデバッグして承認または拒否ボタンをクリックすると、それ以上続行できず、エラーも表示されません

これはグリッドビューです

<div>
        <asp:ScriptManager ID="ScriptManager1" runat="server"/>
         <asp:UpdatePanel runat="server" ID="UPanle" 
            ondatabinding="UPanle_DataBinding_Click">
            <ContentTemplate>
           <asp:GridView ID="GrdFileApprove" runat="server" 
            AutoGenerateColumns="false" 
                onrowcommand="GrdFileApprove_RowCommand" 
                onselectedindexchanged="GrdFileApprove_SelectedIndexChanged">
               <Columns>
                   <asp:TemplateField HeaderText="S no">
                       <ItemTemplate>
                           <%# Container.DataItemIndex+1 %>
                           <asp:HiddenField runat="server" ID="HdnFileID" Value='<%#
                       Eval("DocID") %>' />
                       </ItemTemplate>
                   </asp:TemplateField>
                   <asp:BoundField DataField="DocID" HeaderText="DocumentID"  />
                   <asp:BoundField DataField="DocName" HeaderText="DocName"  />
                   <asp:BoundField DataField="Uploadfile" HeaderText="File Name" />
                   <asp:BoundField DataField="DocType" HeaderText="Document" />
                   <asp:BoundField DataField="DepType" HeaderText="Department" />
                   <asp:TemplateField HeaderText="S no">
                       <ItemTemplate>
                           <asp:Button runat="server" Id="BtnApprove" 
                        CommandName="_Approve" 
                                CommandArgument='<%# Eval("DocID") %>' 
                            Text="Aprrove"   />
                           <asp:Button runat="server" Id="Button1"
                           CommandName="_Reject" 
                                CommandArgument='<%# Eval("DocID") %>' Text="Reject" />
                       </ItemTemplate>
                   </asp:TemplateField>
               </Columns>
           </asp:GridView>
       </ContentTemplate>


        </asp:UpdatePanel> 

</div>
4

1 に答える 1

0

SQL呼び出しにパラメーター値を追加していないため、定義にデフォルト値がないため、ストアドプロシージャはおそらくまったく呼び出されていません。

呼び出しの前に、各パラメーターに次を追加する必要があります。

myCommand.Parameters.AddWithValue("@UserID", userId);
myCommand.Parameters.AddWithValue("@DocID", docId);
myCommand.Parameters.AddWithValue("@ApproveType", "Approve");

最後のものは次のとおりです。

myCommand.Parameters.AddWithValue("@ApproveType", "Reject");

リジェクトの場合。

値は、もちろんハードコーディングするのではなく、保存されている場所から読み取る必要があります。

于 2013-09-30T20:06:22.127 に答える