C# 如何从一个表但多个select语句中获取gridview中的数据

C# 如何从一个表但多个select语句中获取gridview中的数据,c#,asp.net,gridview,C#,Asp.net,Gridview,在asp.net c中,当标志='D'为sumdembt和 当标志为'C'时的总和作为sumcredit 我的代码是: SqlParameter[] para = new SqlParameter[4]; para[0] = new SqlParameter("@stat_leger", ddlACCcode.SelectedValue); para[1] = new SqlParameter("@branch", DDLBranch.SelectedValue);

在asp.net c中,当标志='D'为sumdembt和 当标志为'C'时的总和作为sumcredit 我的代码是:

    SqlParameter[] para = new SqlParameter[4];
    para[0] = new SqlParameter("@stat_leger", ddlACCcode.SelectedValue);
    para[1] = new SqlParameter("@branch", DDLBranch.SelectedValue);
    para[2] = new SqlParameter("@from", db.getDate(txtFrom.Text));
    para[3] = new SqlParameter("@to", db.getDate(txtTo.Text));

    DataTable dtreport = db.SelectCmdText("Select sum(stat_amount) as sumDebt from PostedVoucher where stat_flag ='D' and stat_leger =@stat_leger and branch=@branch and stat_date between @from and @to UNION Select sum(stat_amount) as sumcredit from PostedVoucher where stat_flag ='C' and stat_leger =@stat_leger and branch=@branch  and stat_date between @from and @to ", para);

    GridView1.DataSource = dtreport;
    GridView1.DataBind();
在网格视图中:

  <asp:TemplateField HeaderText="sumDebt">
            <ItemTemplate>
                 <asp:Label ID="sumDebt" runat="server" Text='<%#string.Format("{0:0.000}",float.Parse(Eval("sumDebt").ToString()))%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

            <asp:TemplateField HeaderText="sumcredit">
            <ItemTemplate>
                 <asp:Label ID="sumcredit" runat="server" Text='<%#string.Format("{0:0.000}",float.Parse(Eval("sumcredit").ToString()))%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

gridview中返回数据绑定错误的问题:“System.Data.DataRowView”不包含名为“sumcredit”的属性。

您可以使用Eval的第二个参数格式化结果字符串:

<%# Eval("sumDebt", "{0:c}")%>

要合并表,请尝试以下操作:-

    SqlConnection conn = new SqlConnection("connectionString");
    SqlCommand cmd = new SqlCommand("Select sum(stat_amount) as sumDebt from PostedVoucher where stat_flag ='D' and stat_leger =@stat_leger and branch=@branch and stat_date between @from and @to UNION Select sum(stat_amount) as sumcredit from PostedVoucher where stat_flag ='C' and stat_leger =@stat_leger and branch=@branch  and stat_date between @from and @to", conn);
    cmd.Parameters.AddWithValue("@stat_leger", ddlACCcode.SelectedValue);
    cmd.Parameters.AddWithValue("@branch", DDLBranch.SelectedValue);
    cmd.Parameters.AddWithValue("@from", db.getDate(txtFrom.Text));
    cmd.Parameters.AddWithValue("@to", db.getDate(txtTo.Text));
    conn.Open();
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet dataSet = new DataSet();
    adapter.Fill(dataSet);       


    DataTable tbl1 = dataSet.Tables[0];
    DataTable tbl2 = dataSet.Tables[1];
    tbl1.Columns.Add("sumcredit");

    for (int i = 0; i < tbl2.Rows.Count; i++)
    {
        DataRow dr = tbl2.Rows[i];
        DataRow dr1 = tbl1.Rows[i];
        foreach (DataColumn v_Column in dr.Table.Columns)
        {
            if (dr1.Table.Columns.Contains("sumcredit"))
            {
                dr1["sumcredit"] = dr["sumcredit"];
            }
        }
    }

您是否使用debug检查了您的查询是否在dtreport中返回了任何内容???@feby您的数据表只包含sumDebt而不包含sumcredit,这就是您出现错误的原因。@sharique ansari但我添加了UNION以获取sumcredit,但使用UNION根本没有帮助您知道获取sumDebt和sumcredit的方法吗???@feby use可以使用数据集获取同样的查询,然后您将得到两个表。您可以合并这两个表,然后将此表作为数据提供source@sharique安萨里,你能告诉我怎么做吗??或者给我一个example@feby现在tbl1是您的数据源,所以像这样编写GridView1.DataSource=tbl1;