【问题标题】:display data in grid-view在网格视图中显示数据
【发布时间】:2017-01-06 06:16:03
【问题描述】:

我尝试通过 linq 在 gridview 中显示数据,这就是我尝试的方法

public void vehcile(string id)
        {
            Entities1 wr = new Entities1();
            List<spchile_Result> sv = wr.spchile(id).ToList();
            DataTable dt = new DataTable();
            dt.Columns.Add("Number",typeof(int));
            dt.Columns.Add("RegNo", typeof(string));


            foreach(var c in sv)
            {
                dt.Rows.Add(c.Number,c.RegNo)
            }
            GridView1.DataSource=;
            GridView1.DataBind();
            return dt;

        }

更新

好的,现在我要尽量减少没有。代码行并在我这样做时直接绑定而不是添加列显示错误

 public DataTable vehcile(string id)
        {
            Entities1 wr = new Entities1();
            GridView1.DataSource=wr.spvechile(id);
            GridView1.DataBind();
            return ;
        }
 protected void Page_Load(object sender, EventArgs e)
        {
           if(!this.IsPostBack)
            {
                this.vehcile(id);
            }

        }

这个显示错误

错误 10 需要可转换为“System.Data.DataTable”类型的对象
错误 9 当前上下文中不存在名称“id” 现在我如何返回数据以及如何设置数据源?

有什么解决办法吗?

【问题讨论】:

    标签: asp.net linq gridview


    【解决方案1】:
          public DataTable vehcile(string id)
        {
            Entities1 wr = new Entities1();
            List<spchile_Result> sv = wr.spchile(id).ToList();
            DataTable dt = new DataTable();
            dt.Columns.Add("Number",typeof(int));
            dt.Columns.Add("RegNo", typeof(string));
    
    
            foreach(var c in sv)
            {
                dt.Rows.Add(c.Number,c.RegNo)
            }
            GridView1.DataSource=dt;
            GridView1.DataBind();
            return dt;
    
        }
    

    【讨论】:

    • 您想要返回数据表,那么您需要创建它并在其中填充数据。 dt 是数据表的对象。你需要返回 dt。
    • 但是当我在页面加载时调用 id 这个显示错误也
    • id的值是多少,id的值是怎么得到的?
    • 我在 sp .. 中传递 id 参数,然后在函数中调用它
    • 是的,我可以看到,但是你从哪里获得 id 的值?将“id”声明为公共类成员。Like (public int id=0;)
    【解决方案2】:

    将数据表设置为网格视图的数据源,方法的返回类型应该是DataTable而不是void

           GridView1.DataSource=dt;
           GridView1.DataBind();
    

    【讨论】:

    • 你的返回类型是datatable,但没有返回datatable。(return dt is missing)
    • like this return DataTable;?
    • 公共数据表车辆(字符串 id){ Entities1 WR = new Entities1(); List sv = wr.spchile(id).ToList();数据表 dt = 新数据表(); dt.Columns.Add("数字",typeof(int)); dt.Columns.Add("RegNo", typeof(string)); foreach(var c in sv) { dt.Rows.Add(c.Number,c.RegNo) } GridView1.DataSource=dt; GridView1.DataBind();返回 dt; }
    【解决方案3】:
    GridView1.DataSource=sv;
    GridView1.DataBind();
    

    为什么你需要返回数据你的返回类型是无效的。

    你可以返回喜欢

    public List<spchile_Result> yourmethod(int id)
    {
        ...
        return sv;
    }
    

    【讨论】:

      【解决方案4】:

      设置DataSource 的值,在您的情况下为dt

      GridView1.DataSource=dt;
      GridView1.DataBind();
      

      您的方法中的return type 也是void,而您返回的是DataTable,这将导致错误。

      如果您打算返回DataTable,请将return type 更改为DataTable

      public DataTable vehcile(string id)
      {
       //your code
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        • 2013-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多