c# winform DataGridView分页怎么做

limon758 2008-09-10 01:39:27
需要用
DataTable 和 OracleDataAdapter 的

连的是oracle9i数据库

在网上down下来的都是连access数据库的,改了半天也不知道如何改

谁有DataGridView连oracle的分页的demo给我发一份吧,需要有首页,上一页,下一页,尾页,当然能有删除和导出到Excel里的功能更好了,可以加分!
...全文
998 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
军魂大叔 2012-09-10
  • 打赏
  • 举报
回复
我的电脑里面没有安装Office,是不是因为这个原因啊?
军魂大叔 2012-09-10
  • 打赏
  • 举报
回复
我为什么不能正常引入命名空间啊?
KxdZhao 2010-06-29
  • 打赏
  • 举报
回复
我用了1楼的码 但是不好使! 能往下读 不能读上一页!
suqifeng 2010-03-22
  • 打赏
  • 举报
回复
学习中
maldini4501 2009-08-18
  • 打赏
  • 举报
回复
sdsa
limon758 2008-09-11
  • 打赏
  • 举报
回复
郁闷```
老蚂蚱阿杰``````
这个有两个方法都找不到啊

SetMessageText();和SetCancelUse();
limon758 2008-09-11
  • 打赏
  • 举报
回复
现在基本都可以了,只是还有一个小毛病

我想让导出时让用户自己选择路径和自己写文件名,现在在导出时,可以弹出一个保存对话框了,但是与此同时,会在我的文档里生成一个叫Sheel2.xls的文件,大小跟导出的文件一样大,但里边却没有东西,我想可不可以不让程序生成这个多余的文件

//按下导出按钮
private void button7_Click(object sender, EventArgs e)
{
print(dataGridView1);
}
public void print(DataGridView dataGridView1)
{
//导出到execl
try
{
//没有数据的话就不往下执行
if (dataGridView1.Rows.Count == 0)
return;
//实例化一个Excel.Application对象
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

//让后台执行设置为不可见
excel.Visible = false;

//不新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,而
excel.Application.Workbooks.Add(true);
//Workbook wBook = excel.Application.Workbooks.Add(true);

//生成字段名称
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;
}
//把DataGridView当前页的数据保存在Excel中
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
if (dataGridView1[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + dataGridView1[j, i].Value.ToString();
}
else
{
excel.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();
}
}
}

//设置禁止弹出保存和覆盖的询问提示框
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false;

//保存工作簿
excel.Application.Workbooks.Add(true).Save();
//保存excel文件
excel.Save("F:" + "\\3333333.xls");


//确保Excel进程关闭
excel.Quit();
excel = null;

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示");
}
}
优途科技 2008-09-11
  • 打赏
  • 举报
回复
SetMessageText();和SetCancelUse();是我在进程外修改界面上的控件用的。对你来说没有用,你可以把他们注释掉。


你可以这样:


//保存到Excel
public void SaveDataTableToExcel(System.Data.DataTable excelTable,string filePath)
{
Microsoft.Office.Interop.Excel.Application app =
new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
//让后台执行设置为不可见
app.Visible = false;
//新增加一个工作簿
Workbook wBook = app.Workbooks.Add(true);
//如果要打开已有的工作簿,则使用下面的注释语句
// Workbook wBook = app.Workbooks.Open(@"C:\YourPath\YourWorkbook.xls",
// missing, missing, missing, missing, missing, missing, missing,
// missing, missing, missing, missing, missing,missing, missing);

//取得一个工作表
//如果打开了已有的工作簿,也可以这样获取工作表Worksheet wSheet = wBook.ActiveSheet as Worksheet
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
if (excelTable.Rows.Count > 0)
{
int row = 0;
row = excelTable.Rows.Count;
int col = excelTable.Columns.Count;
allsize = row;

for (int i = 0; i < row; i++)
{
//succeesize++;
//prograsssize++;
for (int j = 0; j < col; j++)
{
string str = excelTable.Rows[i][j].ToString();
wSheet.Cells[i + 1, j + 1] = str;
}
//SetMessageText();
}
}

int size = excelTable.Columns.Count;
for (int i = 0; i < size; i++)
{
wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName;
}

//设置禁止弹出保存和覆盖的询问提示框
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
//保存工作簿
wBook.Save();
//保存excel文件
app.Save(filePath + "\\导出一览表.xls");
}
catch(Exception err)
{
MessageBox.Show("导入Excel出错!错误原因:"+ err.Message, "NaviDMS 2.2",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
//确保Excel进程关闭
app.Quit();
app = null;
}
//SetCancelUse();
}




limon758 2008-09-10
  • 打赏
  • 举报
回复
导出的还没来的急弄

明天来弄好了结帖

我还有几个问题

在其他的帖子里

我还没有解决`````

有兴趣的可以去看一下``

c# winform 可以画出不规则图形的pictureBox么
http://topic.csdn.net/u/20080906/00/6f393ab2-bfc1-49dc-a513-6633bcf23ddf.html

c# winform 打印怎么做哦 注:现在不会的是自定义打印纸张大小,而不是设置已有的规格,可以自己输入长宽的,比如125*956,还有很长的纸的连续打印,需要打印一段,然后执行一段程序,然后再继续打印,这样反复循环
http://topic.csdn.net/u/20080906/01/7b4f3e96-5ee8-4461-92a5-2af6cf8ca03e.html

c# winform 能不能控制台输出
http://topic.csdn.net/u/20080906/13/4678a02e-1bc0-45a5-8920-6883a7af3801.html
LovingAlison 2008-09-10
  • 打赏
  • 举报
回复
不知道到我这里还有分不
优途科技 2008-09-10
  • 打赏
  • 举报
回复
楼主可以结贴了。:)
优途科技 2008-09-10
  • 打赏
  • 举报
回复
还有如何把DataGridView导出到Excel里呢
---------------------------
代码:

        //保存到Excel
public void SaveDataTableToExcel(System.Data.DataTable excelTable,string filePath)
{
Microsoft.Office.Interop.Excel.Application app =
new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
//让后台执行设置为不可见
app.Visible = false;
//新增加一个工作簿
Workbook wBook = app.Workbooks.Add(true);
//如果要打开已有的工作簿,则使用下面的注释语句
// Workbook wBook = app.Workbooks.Open(@"C:\YourPath\YourWorkbook.xls",
// missing, missing, missing, missing, missing, missing, missing,
// missing, missing, missing, missing, missing,missing, missing);

//取得一个工作表
//如果打开了已有的工作簿,也可以这样获取工作表Worksheet wSheet = wBook.ActiveSheet as Worksheet
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
if (excelTable.Rows.Count > 0)
{
int row = 0;
row = excelTable.Rows.Count;
int col = excelTable.Columns.Count;
allsize = row;

for (int i = 0; i < row; i++)
{
succeesize++;
prograsssize++;
for (int j = 0; j < col; j++)
{
string str = excelTable.Rows[i][j].ToString();
wSheet.Cells[i + 1, j + 1] = str;
}
SetMessageText();
}
}

int size = excelTable.Columns.Count;
for (int i = 0; i < size; i++)
{
wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName;
}

//设置禁止弹出保存和覆盖的询问提示框
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
//保存工作簿
wBook.Save();
//保存excel文件
app.Save(filePath + "\\导出一览表.xls");
}
catch(Exception err)
{
MessageBox.Show("导入Excel出错!错误原因:"+ err.Message, "NaviDMS 2.2",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
//确保Excel进程关闭
app.Quit();
app = null;
}
SetCancelUse();
}

limon758 2008-09-10
  • 打赏
  • 举报
回复
谢谢1楼

分页搞定了

-----------------------------------------------------------------------------------

请问删除后在分页里会导致数据顺序混乱掉么,还没做到删除,先问一下

还有如何把DataGridView导出到Excel里呢
viki117 2008-09-10
  • 打赏
  • 举报
回复
WINFORM分页。。只要过滤下绑定源的数据就好了。。。页数自己计算下。。列出来就好了。。
骨头G 2008-09-10
  • 打赏
  • 举报
回复
这种可以自动生成的
行者无疆-Kevin 2008-09-10
  • 打赏
  • 举报
回复
winform 中不用分页,它的原理是一次把数据都读到本地.
如果非要分页,可以写分页存储过程.
每次分页再去查询数据库.
优途科技 2008-09-10
  • 打赏
  • 举报
回复

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧