简体   繁体   English

找不到Request.QueryString,但具有值

[英]Request.QueryString cannot be found but has values

I have a page which is below. 我有一个页面在下面。

这里是图像

I have 2 GridView 我有2个GridView

Labes & TextBoxes 标签和文本框

And A Button 和一个按钮

When the RECEIVED btn is CLICKED , It saves in the correct database and other commands i set into. RECEIVED btn选中时 ,它将保存在正确的数据库和我设置的其他命令中。

But my Command if (Request.QueryString["Status"] == "Received") , 但是我的命令if(Request.QueryString [“ Status”] ==“ Received”)

DOES NOT WORK and that the "Status" said to be/found out null 不工作“状态”据说是/发现

But it has values even in my database 但是它甚至在我的数据库中都有值

and was updated by the command i set to. 并通过我设置的命令进行了更新。

这里

HERE IS ASP.NET CODES: 这是ASP.NET代码:

 <div class="col-lg-12">
      <center>
        <br />
        <i class="fa fa-user" style="font-size: xx-large;"> &nbsp; Receiving</i> <br /><br />
         <i>&nbsp;See below the PO Details & Status</i><br /><br />

         <div id="error2" runat="server" class="alert alert-danger" visible="false">
            This Purchase Order had already been received.
        </div>

         <asp:Label runat="server" ID="Label1" Font-Bold="True"> PR By:</asp:Label>&nbsp; 
         <asp:Label runat="server" ID="txtPRBy"></asp:Label>&nbsp;
         <asp:Label runat="server" ID="Label2" Font-Bold="True"> Approved By:</asp:Label>&nbsp; 
         <asp:Label runat="server" ID="txtOrderBy"></asp:Label>&nbsp;
         <asp:Label runat="server" ID="Label3" Font-Bold="True"> PO Date:</asp:Label>&nbsp; 
         <asp:Label runat="server" ID="txtPODate"></asp:Label>&nbsp;
         <asp:Label runat="server" ID="Label4" Font-Bold="True"> Final Delivery Date:</asp:Label>&nbsp; 
         <asp:Label runat="server" ID="txtFinalDelDate"></asp:Label>
         <br />
         <br />
          <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
              DataSourceID="ReceivingPO">
              <Columns>
                  <asp:BoundField DataField="POID" HeaderText="POID" SortExpression="POID" />
                  <asp:BoundField DataField="ProductID" HeaderText="ProductID" 
                      SortExpression="ProductID" />
                  <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                  <asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
                  <asp:BoundField DataField="Quantity" HeaderText="Quantity" 
                      SortExpression="Quantity" />
                  <asp:BoundField DataField="Amount" HeaderText="Amount" 
                      SortExpression="Amount" />
                  <asp:BoundField DataField="Status" HeaderText="Status" 
                      SortExpression="Status" />
              </Columns>
          </asp:GridView>

          <asp:SqlDataSource ID="ReceivingPO" runat="server" 
              ConnectionString="<%$ ConnectionStrings:MyOwnMeatshopConnectionString %>" 
              SelectCommand="SELECT PODetails.POID, PODetails.ProductID, PODetails.Name, PODetails.Price, PODetails.Quantity, PODetails.Amount, PO.Status FROM PODetails INNER JOIN PO ON PODetails.POID = PO.POID WHERE (PODetails.POID = @POID)">
              <SelectParameters>
                  <asp:QueryStringParameter Name="POID" QueryStringField="ID" Type="Int32" />
              </SelectParameters>
          </asp:SqlDataSource>

       </center>

       <asp:Button ID="btnApprove" runat="server" class="btn btn-success" text="Receive" 
              onclick="btnApprove_Click" />

            <center><i>&nbsp;See below the PO Receiving Details</i><br /><br />


            <asp:Label runat="server" ID="Label5" Font-Bold="True">Received By:</asp:Label>&nbsp;
            <asp:Label runat="server" ID="txtFN"></asp:Label>
            <asp:Label runat="server" ID="txtLN"></asp:Label>&nbsp;
            <asp:Label runat="server" ID="Label6" Font-Bold="True"> Remarks:</asp:Label>&nbsp;
            <asp:TextBox runat="server" ID="txtRemarks" Width="300px"></asp:TextBox>&nbsp;
            <br />
            <br />
                <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
                    DataSourceID="received" DataKeyNames="ReceivingID" >
                    <Columns>
                        <asp:BoundField DataField="ReceivingID" HeaderText="ReceivingID" 
                            SortExpression="ReceivingID" InsertVisible="False" ReadOnly="True" />
                        <asp:BoundField DataField="POID" HeaderText="POID" SortExpression="POID" />
                        <asp:BoundField DataField="ReceivedBy" HeaderText="ReceivedBy" 
                            SortExpression="ReceivedBy" />
                        <asp:BoundField DataField="DateReceived" HeaderText="DateReceived" 
                            SortExpression="DateReceived" />
                        <asp:BoundField DataField="Status" HeaderText="Status" 
                            SortExpression="Status" />
                    </Columns>
                </asp:GridView>

                <asp:SqlDataSource ID="received" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:MyOwnMeatshopConnectionString %>" 
                    SelectCommand="SELECT Receiving.ReceivingID, Receiving.POID, Receiving.ReceivedBy, Receiving.DateReceived, Receiving.Status FROM Receiving INNER JOIN PO ON Receiving.POID = PO.POID WHERE (Receiving.POID = @POID)">
                    <SelectParameters>
                        <asp:QueryStringParameter Name="POID" QueryStringField="ID" Type="Int32" />
                    </SelectParameters>
                </asp:SqlDataSource>

            </center>
          <br />
          <br />
       </div>

HERE IS CODE BEHIND (btn Received) 此处显示代码(收到btn)

        protected void btnApprove_Click(object sender, EventArgs e)
    {
        con.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;

        if (Request.QueryString["Status"] == "Received")
        {
            error2.Visible = true;
        }

        else
        {
                foreach (GridViewRow row in GridView1.Rows)
                {


                    if (row.RowType == DataControlRowType.DataRow)
                    {


                        string ProductID = GridView1.Rows[row.RowIndex].Cells[1].Text;
                        int Quantity = int.Parse(GridView1.Rows[row.RowIndex].Cells[4].Text);


                        cmd.CommandText = "INSERT INTO Receiving VALUES (@POID, @RequestedBy, " +
                                "@OrderBy, @PODate, @FinalDeliveryDate, @DateReceived, @ReceivedBy, @Status, @Remarks)";
                        cmd.Parameters.AddWithValue("@POID", Request.QueryString["ID"].ToString());
                        cmd.Parameters.AddWithValue("@RequestedBy", txtPRBy.Text);
                        cmd.Parameters.AddWithValue("@OrderBy", txtOrderBy.Text);
                        cmd.Parameters.AddWithValue("@PODate", txtPODate.Text);
                        cmd.Parameters.AddWithValue("@FinalDeliveryDate", txtFinalDelDate.Text);
                        cmd.Parameters.AddWithValue("@DateReceived", DateTime.Now);
                        cmd.Parameters.AddWithValue("@ReceivedBy", txtLN.Text + txtFN.Text);
                        cmd.Parameters.AddWithValue("@Status", "Received");
                        cmd.Parameters.AddWithValue("@Remarks", txtRemarks.Text);
                        cmd.ExecuteNonQuery();

                        cmd.CommandText = "UPDATE PO SET Status=@Status WHERE POID=@POID";
                        cmd.ExecuteNonQuery();

                        cmd.CommandText = "UPDATE Products SET Available+=@Quantity WHERE ProductID=@ProductID";
                        cmd.Parameters.Add("@ProductID", SqlDbType.VarChar).Value = ProductID.ToString();
                        cmd.Parameters.AddWithValue("@Quantity", Quantity);
                        cmd.ExecuteNonQuery();

                        GridView1.DataBind();
                        con.Close();
                    }


                }



        }
    }

in my other page it worked. 在我的其他页面上,它起作用了。 But here no. 但是这里没有。

Help Guys thank you in advance! 伙计们,先谢谢你!

i just don't know why it happens 我只是不知道为什么会这样

Also i set codes in the page load 我也在页面加载中设置代码

protected void Page_Load(object sender, EventArgs e)
        {
if (Request.QueryString["ID"] != null)
            {
                int POID = 0;
                bool validpurch = int.TryParse(Request.QueryString["ID"].ToString(), out POID);

                if (validpurch)
                {
                    if (!IsPostBack)
                    {
                        getPO();
                        GetUser();
                    }
                }
                else
                    Response.Redirect("Default.aspx");
            }
            else
                Response.Redirect("Default.aspx");
        }

I'll take a stab at this. 我会为此刺一针。 If I understand correctly, you'd like to display the error message and not execute the UPDATEs if the product in GridView1 status == "Received". 如果我理解正确,那么如果产品处于GridView1 status ==“ Received”,则您想显示错误消息,而不执行UPDATE。

If this is the case, you'll need to grab that value from the grid. 如果是这种情况,则需要从网格中获取该值。 It's not present in the query string. 它不在查询字符串中。 Like this: 像这样:

protected void btnApprove_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            string status = GridView1.Rows[row.RowIndex].Cells[6].Text;
            if (status == "Received")
            {
                error2.Visible = true;
            }
            else
            {
                string ProductID = GridView1.Rows[row.RowIndex].Cells[1].Text;
                int Quantity = int.Parse(GridView1.Rows[row.RowIndex].Cells[4].Text);
                con.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;

                cmd.CommandText = "INSERT INTO Receiving VALUES (@POID, @RequestedBy, " +
                    "@OrderBy, @PODate, @FinalDeliveryDate, @DateReceived, @ReceivedBy, @Status, @Remarks)";
                cmd.Parameters.AddWithValue("@POID", Request.QueryString["ID"].ToString());
                cmd.Parameters.AddWithValue("@RequestedBy", txtPRBy.Text);
                cmd.Parameters.AddWithValue("@OrderBy", txtOrderBy.Text);
                cmd.Parameters.AddWithValue("@PODate", txtPODate.Text);
                cmd.Parameters.AddWithValue("@FinalDeliveryDate", txtFinalDelDate.Text);
                cmd.Parameters.AddWithValue("@DateReceived", DateTime.Now);
                cmd.Parameters.AddWithValue("@ReceivedBy", txtLN.Text + txtFN.Text);
                cmd.Parameters.AddWithValue("@Status", "Received");
                cmd.Parameters.AddWithValue("@Remarks", txtRemarks.Text);
                cmd.ExecuteNonQuery();

                cmd.CommandText = "UPDATE PO SET Status=@Status WHERE POID=@POID";
                cmd.ExecuteNonQuery();

                cmd.CommandText = "UPDATE Products SET Available+=@Quantity WHERE ProductID=@ProductID";
                cmd.Parameters.Add("@ProductID", SqlDbType.VarChar).Value = ProductID.ToString();
                cmd.Parameters.AddWithValue("@Quantity", Quantity);
                cmd.ExecuteNonQuery();

                GridView1.DataBind();
                con.Close(); 
            }
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM