0

i have a project which is document managment system in this itry to apporve/reject documents and fr this i create sp for approve and reject document

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

approve:

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

and code is

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();
            }
        }
    }
}

when i debug the code and click on approve or reject button it can not further proceed and also not show me any error

this is grdiview

<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 回答