如何将从存储过程创建的绑定源绑定到gridview
Posted
技术标签:
【中文标题】如何将从存储过程创建的绑定源绑定到gridview【英文标题】:How do i bind a bindingsource created from stored procedure to a gridview 【发布时间】:2022-01-07 18:00:20 【问题描述】:首先,我的数据库中有 3 个表:
Student |
---|
StudentID |
Name |
Adress |
OtherInfo |
TuitionFee |
---|
StudentID |
Years |
Semester |
FeeAmount |
Detailed_TuitionFee |
---|
StudentID |
Years |
Semester |
PaymentDate |
PaymentAmount |
然后我创建了一个存储过程来选择[TuitionFee ]
和[Detailed_TuitionFee ]
上的某个列,并以StudentID
作为参数。
create procedure
@StudentID
as
begin
select
from [TuitionFee ]
left outer join [Detailed_TuitionFee ] on TuitionFee.StudentID = Detailed_TuitionFee.StudentID
and TuitionFee.Semester = Detailed_TuitionFee.Semester
where TuitionFee.StudentID = @StudentID
and Detailed_TuitionFee.StudentID = @StudentID
在C#中,我写的代码是
BindingSource bdsTuitionInfo = new BindingSource();
String studentID;
GridControl gCtrlTuition;
GridView gViewTuition;
String sqlCmd = "exec Stored procedure" + studentID;
DataTable dt = Program.ExecSqlDataTable(sqlCmd); // create a Data table from SP
bdsTuitionInfo.DataSource = dt; // import data table into Binding source
gCtrlTuition.DataSource = bdsTuitionInfo; // import Binding source into Grid Control
gViewTuition.DataSource = bdsTuitionInfo; // The code shows ERROR: "Property or indexer 'property' cannot be assigned to -- it is read only" here
如何在GridView
中显示来自此BindingSource
的数据?
我的GridView
中有什么需要调整或配置的吗?
【问题讨论】:
【参考方案1】:我从未使用过 DevExpress 的网格,但他们的 official example 似乎表明 GridView 不是您需要为其分配 DataSource 的东西;您将源分配给 GridControl,然后可能通过 GridControl 访问 GridView 以设置其他属性..
gridControl1.DataSource = DataHelper.GetData(30);
// The grid automatically creates columns for the public fields found in the data source.
// Calling the gridView1.PopulateColumns method is not required unless the gridView1.OptionsBehavior.AutoPopulateColumns is disabled
// The grid automatically creates a GridView that presents the underlying data as a two-dimensional table.
GridView gridView1 = gridControl1.MainView as GridView;
GridView;
// Obtain created columns.
GridColumn colCompany = gridView1.Columns["CompanyName"];
...
【讨论】:
谢谢你的回答!!这是我真正需要的。 GridView 现在可以显示我的存储过程中的行。祝你今天愉快。【参考方案2】:首先将您的数据填充到数据表 dt 中。然后只需在您的页面上添加 GridView 控件。然后使用(如果您使用 ASP.NET Web 窗体):
GridView.DataSource = dt;
//GridView.Databind(); //just in asp.net webform
在 ASP.NET Web 窗体中有一个 Grid View 控件,我想你会使用它。
【讨论】:
我正在使用 DevExpress 组件构建 Winform 项目。因此,我不知道哪一行来自 ASP.NET。我尝试了您推荐的 2 行,但它们显示错误:“CS0200:无法将属性或索引器‘属性’分配给——它是只读的”和错误:““GridView”不包含“DataBind”的定义,并且无法访问扩展方法“DataBind””。 DataBind 仅适用于 ASP.NET Webforms。首先,您应该在 DxGridControls 中定义具有真实名称的列。然后将数据填充到数据表中。然后将数据绑定到 DxGrigControl。当您在窗体上添加网格控件时,您可以看到网格控件底部的小窗体包含两个按钮。点击Run Designer并定义你的列。 i.stack.imgur.com/8nfFr.jpg 感谢您的回答!!我在 GridView 中没有任何定义的列,因此数据也没有显示。这是我第一次使用不是来自 DataSource 的 DataTable 处理 DevExpress(也是我第一次使用 C# 和 DevExpress),所以我搞砸了很多。祝你有个美好的一天,先生。以上是关于如何将从存储过程创建的绑定源绑定到gridview的主要内容,如果未能解决你的问题,请参考以下文章
Web开发中,如何在GridView每次绑定后将滚动条移动到下方?
gridveiw直接显示数据,不绑定数据库,如何在后台添加数据绑定到gridview
如何将列表数组与 GridView 或 DataList 绑定?