C# 如何从一个表但多个select语句中获取gridview中的数据
在asp.net c中,当标志='D'为sumdembt和 当标志为'C'时的总和作为sumcredit 我的代码是: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);
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;