none
得到的count结果要怎么显示最科学? RRS feed

  • 问题

  •     举个实例!现在有个三个控件

      1.SqldataSource1,它的selectCommand是“SelectCommand="SELECT ContractNumber, FirstRentDate, EndRentDate, AddRent FROM RentTable WHERE (ContractNumber = @ContractNumber)"

        2.GridView1的数据源是SqldataSource1。

        3.Textbox1,用来输入变量@ContractNumber。

    ---------------------------以上一切正常-------------------------

     

        我想添加一个功能,就是显示符合@ContractNumber条件的行数。命令是:select count(*) from ContractTable where ContractNumber=@ContractNumber

        问题1:我本来想用Label控件来显示Count的结果,但无法指定Lable的数据源;用GridView吧,又对不整齐行。请问最科学的方法的该怎么做呢?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年9月4日 6:21

答案

  •     这个是显示有多少行吧?

        如果还要添加其他函数,比如:Sum()呢?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!


    依样画葫芦,请注意以下粗体字部份

     

     <asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                
                SelectCommand="SELECT ContractNumber, FirstRentDate, EndRentDate, AddRent FROM RentTable WHERE (ContractNumber = @ContractNumber);
                               Select @Count=Count(*) from RentTable WHERE (ContractNumber = @ContractNumber);
                               Select @SumAddRent=Sum(AddRent) from RentTable WHERE (ContractNumber = @ContractNumber)" 
                onselected="SqlDataSource1_Selected">
                <SelectParameters>
                    <asp:ControlParameter ControlID="TextBox1" Name="ContractNumber" PropertyName="Text" ConvertEmptyStringToNull="false" />
                    <asp:Parameter Name="Count" Direction="Output" Type="Int32" />
                    <asp:Parameter Name="SumAddRent" Direction="Output" Type="Int32" />
                </SelectParameters>
            </asp:SqlDataSource><br />
            <asp:GridView runat="server" ID="GridView1" DataSourceID="SqlDataSource1" />
            <asp:TextBox runat="server" ID="TextBox1" /><br />
            <asp:Button Text="取得結果" ID="btn_execute" runat="server" 
                onclick="btn_execute_Click" /><br />
            <asp:Label ID="lb_result" runat="server" />
    
    

        protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
        {
           string count =  e.Command.Parameters["@Count"].Value.ToString();//取得行數
           string SumAddRent = e.Command.Parameters["@SumAddRent"].Value.ToString();//取得Sum值
           lb_result.Text = "行數:" + count + ",總合:" + SumAddRent;
        }
    

     

     


    Shadowと愉快なコード達

    2011年9月4日 14:00
  • 建議你可以在select command中利用t-sql做好所有你要做的運算(例如count、sum、avg、max、min等),最後在SqlDataSource的select方法,就可以在你想要顯示上述運算結果的地方彈性顯示,不妨參考下列文章:

    ADO.NET #5,自己設定畫面,讓SqlDataSource幫我們撈(呈現 .Seclect())資料,MIS2000Lab,MIS2000 Lab.的 ASP.NET 4.0 專題實務/教學與分享


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年9月9日 5:21

全部回复

  • 在不知道您详细代码是如何的情况下

    告诉您是可以在SqldataSource的Selected事件做

     

     

    protected void SqldataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
        {
          label1.Text =   e.AffectedRows.ToString();   
    }

     


    Shadowと愉快なコード達

    2011年9月4日 8:28
  •     这个是显示有多少行吧?

        如果还要添加其他函数,比如:Sum()呢?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年9月4日 13:44
  •     这个是显示有多少行吧?

        如果还要添加其他函数,比如:Sum()呢?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!


    依样画葫芦,请注意以下粗体字部份

     

     <asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
                
                SelectCommand="SELECT ContractNumber, FirstRentDate, EndRentDate, AddRent FROM RentTable WHERE (ContractNumber = @ContractNumber);
                               Select @Count=Count(*) from RentTable WHERE (ContractNumber = @ContractNumber);
                               Select @SumAddRent=Sum(AddRent) from RentTable WHERE (ContractNumber = @ContractNumber)" 
                onselected="SqlDataSource1_Selected">
                <SelectParameters>
                    <asp:ControlParameter ControlID="TextBox1" Name="ContractNumber" PropertyName="Text" ConvertEmptyStringToNull="false" />
                    <asp:Parameter Name="Count" Direction="Output" Type="Int32" />
                    <asp:Parameter Name="SumAddRent" Direction="Output" Type="Int32" />
                </SelectParameters>
            </asp:SqlDataSource><br />
            <asp:GridView runat="server" ID="GridView1" DataSourceID="SqlDataSource1" />
            <asp:TextBox runat="server" ID="TextBox1" /><br />
            <asp:Button Text="取得結果" ID="btn_execute" runat="server" 
                onclick="btn_execute_Click" /><br />
            <asp:Label ID="lb_result" runat="server" />
    
    

        protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
        {
           string count =  e.Command.Parameters["@Count"].Value.ToString();//取得行數
           string SumAddRent = e.Command.Parameters["@SumAddRent"].Value.ToString();//取得Sum值
           lb_result.Text = "行數:" + count + ",總合:" + SumAddRent;
        }
    

     

     


    Shadowと愉快なコード達

    2011年9月4日 14:00
  • 建議你可以在select command中利用t-sql做好所有你要做的運算(例如count、sum、avg、max、min等),最後在SqlDataSource的select方法,就可以在你想要顯示上述運算結果的地方彈性顯示,不妨參考下列文章:

    ADO.NET #5,自己設定畫面,讓SqlDataSource幫我們撈(呈現 .Seclect())資料,MIS2000Lab,MIS2000 Lab.的 ASP.NET 4.0 專題實務/教學與分享


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年9月9日 5:21
  • SQL还能这样用!!!看来我要深入学习了!谢谢!
    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年9月16日 23:42