webform c#中的datagridview在页脚中显示查询
Posted
技术标签:
【中文标题】webform c#中的datagridview在页脚中显示查询【英文标题】:datagridview in webform c# show query in footer 【发布时间】:2013-12-05 06:18:47 【问题描述】:我有两个在 C# 中运行在 datagridview 中的查询,一个是显示所有数据。另一个设置为显示在页脚中。页脚正在显示,只是不显示我的查询。 查询一个(带页脚)
protected void Button2_Click(object sender, EventArgs e)
mysqlCommand cmd = new MySqlCommand("SELECT * FROM Customer", cs);
cs.Open();
MySqlDataReader dgl = cmd.ExecuteReader();
dg.ShowFooter = true;
dg.DataSource = dgl;
dg.DataBind();
cs.Close();
**query two(footer query)**
protected void dg_DataBound(object sender, EventArgs e)
MySqlCommand cmd = new MySqlCommand("SELECT SUM(Donation) AS Total_Donation FROM Customer", cs);
cs.Open();
String totalDonations = Convert.ToString(cmd.ExecuteScalar());
cs.Close();
dg.FooterRow.Cells[3].Text = totalDonations;
数据网格显示查询一运行良好,页脚甚至显示但没有任何数据。
【问题讨论】:
你好像没有控件来显示第二个查询的返回值... 嗯所以 dg.DataSource = dgl; ? 好吧,您使用“页脚”一词,所以我假设这是一个网页。如果您尝试显示查询,则需要在 Web 表单上使用label
之类的内容来显示该数据,对吗?
嗯,它是 datagridview 中的页脚,我不确定 Brian。我试试看
这样做:string totalDonation = string.Format("Donation:0", cmd.ExecuteScaler());
【参考方案1】:
虽然你可以使用它,但还是有办法改进它。
在第一种方法中,using 语句可以更好地管理连接:
protected void Button2_Click(object sender, EventArgs e)
DataTable dt = new DataTable();
//Assuming you have a connection string strConnect
using (SqlConnection con = new SqlConnection(strConnect))
con.Open();
using (SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customer", con))
da.Fill(dt);
dg.ShowFooter = true;
dg.DataSource = dt;
dg.DataBind();
还有第二种方法:
protected void dg_DataBound(object sender, EventArgs e)
String totalDonations = string.Empty;
//Assuming you have a connection string strConnect
using (SqlConnection con = new SqlConnection(strConnect))
con.Open();
using (SqlCommand cmd = new SqlCommand("SELECT SUM(Donation) AS Total_Donation FROM Customer", con))
totalDonations = Convert.ToString(cmd.ExecuteScalar());
dg.FooterRow.Cells[3].Text = totalDonations;
可能我会使用 GridView 的 RowDataBound 写入页脚,在那里我可以知道行的类型:
protected void dg_RowDataBound(object sender, GridViewRowEventArgs e)
if (e.Row.RowType == DataControlRowType.Footer)
String totalDonations = string.Empty;
//Assuming you have a connection string strConnect
using (SqlConnection con = new SqlConnection(strConnect))
con.Open();
using (SqlCommand cmd = new SqlCommand("SELECT SUM(Donation) AS Total_Donation FROM Customer", con))
totalDonations = Convert.ToString(cmd.ExecuteScalar());
e.Row.Cells[3].Text = totalDonations;
编辑:这是我用来测试的标记:
<asp:GridView ID="dg" runat="server" AutoGenerateColumns="true" OnDataBound="dg_DataBound" ShowFooter="true">
</asp:GridView>
【讨论】:
非常感谢,我试过了,改成MYSQL,加上我的连接字符串,剩下的。网格视图显示,但页脚数据不显示。我稍后会继续研究它,如果它有效,我会接受你的回答。再次感谢 啊...第二个 sql 有错字...应该是客户,而不是客户 仍然没有显示页脚数据,我稍微检查一下代码,看看我是否可以让它工作。 可以访问我用过的源码here。 感谢您发送请求 benoats@gmail.com【参考方案2】:经过几个小时的问题,我已经解决了。
corrected code
MySqlCommand cmd = new MySqlCommand("SELECT * FROM Customer", cs);
MySqlCommand cmdtwo = new MySqlCommand("SELECT SUM(Donation) AS Total_Donation FROM Customer", cs);
cs.Open();
MySqlDataReader dgl = cmd.ExecuteReader();
dg.DataSource = dgl;
dg.ShowFooter = true;
dg.DataBind();
cs.Close();
cs.Open();
string totalDonations = Convert.ToString(cmdtwo.ExecuteScalar());
cs.Close();
dg.FooterRow.Cells[7].Text = "Total £";
dg.FooterRow.Cells[8].Text = totalDonations;
虽然我确信有更好的方法可以做到这一点,但如果您知道,请随时编辑。
【讨论】:
以上是关于webform c#中的datagridview在页脚中显示查询的主要内容,如果未能解决你的问题,请参考以下文章
如何允许用户在 c# 中的 datagridview 组合框中手动输入
如何将值收集到数组中并将集合传递给 C# 中的 datagridview?
如何在C#中 双击datagridview1中的一行数据,添加到新的datagridview2中。 B/C VS2010