Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在两个按钮中调用bool方法不起作用_C#_Asp.net - Fatal编程技术网

C# 在两个按钮中调用bool方法不起作用

C# 在两个按钮中调用bool方法不起作用,c#,asp.net,C#,Asp.net,我有一个bool方法来计算总和(数量*价格),它工作正常。 当我从一个按钮调用该方法时,它工作正常 protected void btnupdate_Click(object sender, EventArgs e) { calculate_sum(); } 我还需要从不同的按钮再次调用它。 所以我试着写下: if(calculate_sum()) { something } el

我有一个
bool
方法来计算总和(数量*价格),它工作正常。 当我从一个按钮调用该方法时,它工作正常

protected void btnupdate_Click(object sender, EventArgs e)     
    {
        calculate_sum();
    }
我还需要从不同的按钮再次调用它。 所以我试着写下:

if(calculate_sum())
        {
            something
        }
        else
        {
            something
        }
第二个按钮的问题在于,它没有执行之前单击按钮
btnupdate
时计算出的值,而不会再次执行该方法

aspx
页面包装在带有触发器的
updatepanels
中,可能与此有关

以下是该方法的代码:

public bool calculate_sum()
    {

        bool is_ok = true; ;
        double totalsum = 0;
        int qty = 0; ;
        string p = "";
        for (int i = 0; i < GridView2.Rows.Count; i++)
        {
            if (GridView2.Rows[i].RowType == DataControlRowType.DataRow)
            {
                TextBox txtqty = GridView2.Rows[i].FindControl("lblquantity") as TextBox;

                 p = GridView2.Rows[i].Cells[0].Text.ToString();

                 if (Int32.TryParse(txtqty.Text, out qty))
                 {
                     if (qty > 0)
                     {
                         double pr = Convert.ToDouble(p.ToString());
                         //total per row
                         double tcost = qty * pr;
                         totalsum = totalsum + tcost;
                         GridView2.Rows[i].Cells[6].Text = Convert.ToString((tcost));

                     }
                     else
                     {
                         lblGrandTotal.Visible = true;
                         lblGrandTotal.Text = "enter only numbers greater than 0";
                         lblGrandTotal.ForeColor = System.Drawing.Color.Red;
                         is_ok = false;

                     }
                 }

                     else
                     {
                         lblGrandTotal.Visible = true;
                         lblGrandTotal.Text = "enter only numbers greater than 0";
                         lblGrandTotal.ForeColor = System.Drawing.Color.Red;
                         is_ok = false;
                     }
                 }



        }
        if (is_ok)
        {
            lblGrandTotal.ForeColor = System.Drawing.Color.Black;
            lblGrandTotal.Text = Convert.ToString((totalsum));
            return is_ok;

        }
        else
        {
            return is_ok;
        }

    }
public bool calculate_sum()
{
bool是_ok=true;
双倍总和=0;
整数数量=0;
字符串p=“”;
对于(int i=0;i0)
{
double pr=Convert.ToDouble(p.ToString());
//每行总计
双倍总成本=数量*请购单;
总和=总和+总成本;
GridView2.Rows[i]。Cells[6]。Text=Convert.ToString((tcost));
}
其他的
{
lblgrandtottal.Visible=true;
lblGrandTotal.Text=“仅输入大于0的数字”;
lblgrandtottal.ForeColor=System.Drawing.Color.Red;
is_ok=false;
}
}
其他的
{
lblgrandtottal.Visible=true;
lblGrandTotal.Text=“仅输入大于0的数字”;
lblgrandtottal.ForeColor=System.Drawing.Color.Red;
is_ok=false;
}
}
}
如果(你还好吗)
{
lblgrandtottal.ForeColor=System.Drawing.Color.Black;
lblGrandTotal.Text=Convert.ToString((totalsum));
还可以;
}
其他的
{
还可以;
}
}
这里是aspx页面:

<%@ Page Title="Check out" Language="C#" MasterPageFile="~/MasterPage/MasterPage.master" AutoEventWireup="true" CodeFile="CheckOut.aspx.cs" Inherits="CheckOut" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
    </asp:ScriptManagerProxy>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" 
        UpdateMode="Conditional">

    <ContentTemplate>



    <asp:HiddenField ID="hfGrandTotal" runat="server"  />
    <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" >

        <Columns>
        <asp:BoundField DataField="Price" HeaderText="Price" ItemStyle-CssClass="price" >

<ItemStyle CssClass="price"></ItemStyle>
            </asp:BoundField>

                         <asp:TemplateField HeaderText="ProductID" Visible="False">
                <ItemTemplate>
                    <asp:Label ID="lblID" runat="server" Text='<%# Eval("ProductID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="ProductName">
                <ItemTemplate>
                    <asp:Label ID="lblName" runat="server" Text='<%# Eval("ProductName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

             <asp:TemplateField HeaderText="Summary">
                <ItemTemplate>
                    <asp:Label ID="lblSum" runat="server" Text='<%# Eval("Summary") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField HeaderText="picPath" Visible="False">
                <ItemTemplate>
                    <asp:Label ID="lblPic" runat="server" Text='<%# Eval("picPath") %>' ></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField HeaderText = "quantity">
            <ItemTemplate>
                <asp:TextBox ID="lblquantity" runat="server"  >1</asp:TextBox>

            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText = "Total">
            <ItemTemplate>
                <asp:Label ID="lblTotal" runat="server" ></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

        </Columns>

    </asp:GridView>
        <br />


total sum:
            <asp:Button ID="btnupdate" runat="server" Text="update quantity" 
                onclick="btnupdate_Click" ValidationGroup="panel1" />
<asp:Label ID="lblGrandTotal" runat="server" ></asp:Label>
</ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnupdate" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
    <br />
    <br />
    <br />
    <br />
    <br />

    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
    <ContentTemplate>


    <asp:Table ID="Table1" runat="server" CellPadding="7" CellSpacing="7" 
        CaptionAlign="Bottom" HorizontalAlign="Center" BorderStyle="Solid" BorderWidth="1" 
                BorderColor="Black" Height="305px" Width="408px">
        <asp:TableHeaderRow BorderStyle="Solid" BorderWidth="1" BorderColor="Black">
        <asp:TableCell ColumnSpan="3" BorderStyle="Solid" BorderWidth="1" BorderColor="Black">customer details</asp:TableCell>
        </asp:TableHeaderRow>

        <asp:TableRow runat="server" >

            <asp:TableCell runat="server" >  
            <asp:TextBox ID="TextBox1" runat="server" Width="150px"></asp:TextBox>
                &nbsp; &nbsp;<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ForeColor="Red" ErrorMessage="חובה" ControlToValidate="TextBox1" Text="requierd" ValidationGroup="panel2"></asp:RequiredFieldValidator>
            </asp:TableCell>

            <asp:TableCell runat="server">    
            <asp:Label ID="Label1" runat="server" Text="name"></asp:Label>
           </asp:TableCell>

        </asp:TableRow>
       <asp:TableRow ID="TableRow1" runat="server">

            <asp:TableCell ID="TableCell1" runat="server">  
            <asp:TextBox ID="TextBox4" runat="server" Width="150px" CausesValidation="True"></asp:TextBox>
            &nbsp; &nbsp;<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ForeColor="Red" ErrorMessage="חובה" ControlToValidate="TextBox4" Text="requierd" ValidationGroup="panel2"></asp:RequiredFieldValidator>
               <br /> <asp:RegularExpressionValidator ID="RegularExpressionValidator1"  runat="server" ErrorMessage="הקלד מספר טלפון" ControlToValidate="TextBox4" ForeColor="Red" ValidationExpression="^(02|03|04|08|09|050|052|054|057|074|077)\-\d{7,8}$"></asp:RegularExpressionValidator>
            </asp:TableCell>

            <asp:TableCell ID="TableCell2" runat="server">    
            <asp:Label ID="Label4" runat="server" Text="phone"></asp:Label>

           </asp:TableCell>
        </asp:TableRow>
        <asp:TableRow runat="server">

            <asp:TableCell runat="server">   

            <asp:TextBox ID="TextBox2" runat="server" Width="150px" CausesValidation="True"></asp:TextBox>
           &nbsp; &nbsp; <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ForeColor="Red"  ErrorMessage="חובה" ControlToValidate="TextBox2" Text="requierd" ValidationGroup="panel2"></asp:RequiredFieldValidator>
            </asp:TableCell>

       <asp:TableCell>
    <asp:Label ID="Label2" runat="server" Text="address"></asp:Label>
    </asp:TableCell>
        </asp:TableRow>
        <asp:TableRow runat="server">

            <asp:TableCell runat="server">
           <asp:TextBox ID="TextBox3" runat="server" Width="150px"></asp:TextBox>
           &nbsp; &nbsp;<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ForeColor="Red" ErrorMessage="חובה" ControlToValidate="TextBox3" Text="requierd" ValidationGroup="panel2"></asp:RequiredFieldValidator>
           <br />
                <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="only digits" ControlToValidate="TextBox3" ForeColor="Red" MinimumValue="1000" MaximumValue="9999999999999999" ValidationGroup="panel2"></asp:RangeValidator>
            </asp:TableCell>

            <asp:TableCell runat="server">

             <asp:Label ID="Label3" runat="server" Text="number"></asp:Label>
            </asp:TableCell>
        </asp:TableRow>

        <asp:TableRow>
        <asp:TableCell ColumnSpan="3">
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="pay" Width="150" ValidationGroup="panel2" />
        </asp:TableCell>
        </asp:TableRow>

        <asp:TableRow>
        <asp:TableCell ColumnSpan="3">
         <asp:Label ID="lblmessage" runat="server" Text="Label"  
        Font-Size="XX-Large" Visible="False"></asp:Label>

        </asp:TableCell>
        </asp:TableRow>
    </asp:Table>



    <asp:Button ID="btnPrint" runat="server"  Text="print" 
        onclick="btnPrint_Click" Visible="False" />

    </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnPrint" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
    </asp:Content>

1.

总额:




客户详细信息


你的问题还不是很清楚

您所指的“第二个按钮”是否命名为“按钮1”

如果是,请注意它位于不同的UpdatePanel中,然后是网格和“Update”按钮。 当第二个UpdatePanel被触发时(从Button1),在网格中(在另一个UpdatePanel中)所做的更改不一定随它一起传递回服务器

我建议:

  • 暂时删除这两个UpdatePanel,然后查看它是否可以正常工作。如果是这样的话,您就知道了罪魁祸首,将UpdatePanel更改为Always可能会解决您的问题

  • 如果这不能解决您的问题,请按照@JonSkeet在评论中的建议进行操作,并创建一个简短的演示来显示问题,以便我们能够更好地帮助您解决问题


  • 你的意思是你想让两个按钮运行完全相同的代码吗?现在回答这个问题是不可能的——它太模糊了。
    calculate\u sum
    方法是什么样子的?您遗漏了重要部分。如何创建和,在哪里存储值,从第二个按钮(重新)计算值?你有什么问题?@jon Skett,你是对的,我忘了插入方法代码。我已经更新了我的代码。Thanx是什么让你认为代码没有再次运行?您在调试器中观察到了什么?你能提供一个简短但完整的例子来说明这个问题吗?请阅读我按照你告诉我的做了,删除了所有的UpdatePanel,一切正常。所以我会努力解决的。至少我纠正了c代码。塔克斯