【问题标题】:GridView Table 1 related to Table 2GridView 表 1 相关表 2
【发布时间】:2013-04-19 12:29:05
【问题描述】:

抱歉,我知道标题确实令人困惑,但我无法弄清楚到底要写什么。

基本上我创建了一个查询数据库和显示数据的网格视图。它工作得很好,没有抱怨,但是我现在拥有的是,

但我想要的是,

问题:我不确定我该怎么做,有人可以指出我正确的方向吗?

我想我会使用嵌套的网格视图。

【问题讨论】:

  • 如果您使用的是 EntityDataSource,如果您设置好数据库和 EF 模型,您可以将 ListView 放在最后一列并将其项目绑定到 Navigation 属性。 .Net2.0 真的吗?

标签: c# gridview webforms


【解决方案1】:

尝试更改您的SELECT 查询,如下所示...您将获得预期结果...

SQL 小提琴: http://www.sqlfiddle.com/#!3/00b5f/15

我已将Table 命名为Fruits

SELECT CrateTitle,CrateDescription,CrateID,
stuff(
(
    SELECT ','+ [FruitTitle] FROM fruits WHERE CrateID = t.CrateID FOR XML path('')
),1,1,'') Types_of_Fruits_in_Crate
FROM (SELECT DISTINCT CrateTitle,CrateDescription,CrateID FROM fruits )t

CREATE a PROC

*Place this Query in that Proc*

*Call that Proc*

*assign that Result set to GridView*

您可以使用以下代码将他的存储过程结果集分配给 GridView:

        DataTable dt = new DataTable();
        SqlConnection connection = new SqlConnection("Your Connection String");
        try
        {
            connection.Open();
            string spName = "YOURStoredProcudureName";


            SqlCommand sqlCmd = new SqlCommand(spName, connection);
            SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
            sqlCmd.CommandType = CommandType.StoredProcedure;


            sqlDa.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                //display the DataTable to a Data control like GridView for example
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
        catch (System.Data.SqlClient.SqlException ex)
        {
            string msg = "Fetch Error:";
            msg += ex.Message;
            throw new Exception(msg);
        }
        finally
        {
            connection.Close();
        }

【讨论】:

  • @user13814 :谢谢,如果它可以帮助您将其标记为答案,那么只有它很容易被其他人识别..
  • 潘典,如果我也想得到水果重量怎么办,这已经是一个列在视图中
  • @user13814: 每行的值是否不同...?
  • 在第二个选择语句中,我尝试添加水果重量,但它似乎不起作用,只显示结果为 FruitWeight>, Mango 7
  • 这是语法错误,我已修复,谢谢,我还有另一个问题,但我会再问一个问题
【解决方案2】:

这更像是一个 sql(或您的数据库引擎使用的任何语言)问题而不是 ac# 问题,尽管 c# 的一种解决方案是(尽管可能需要一些额外的工作)使用 html 文字来绘制您的表格运行时间

另一种选择是更改您的 sql,但如果没有更多信息,我不能说您是否可以在 changeID 或数据透视表上使用 group by

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
相关资源
最近更新 更多