如何在DataGrid中增加一空白行

「已注销」 2007-08-13 01:33:30
我是用DataView作为数据集的数据源,想在DataGrid中增加空白行
在DataView中增加一空白行,就是说本来一页要显示十行,但实际只有7行,其他三行要用空白行代替,要怎么办,
而且在数据库中有一字段是不能为空的.
这个问题困挠了我很久,还请高手们指点指点
...全文
755 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
ll124993513 2007-08-14
  • 打赏
  • 举报
回复
关注。。。。。。。。。。。
「已注销」 2007-08-14
  • 打赏
  • 举报
回复
还是不行,请高手指点指点
「已注销」 2007-08-14
  • 打赏
  • 举报
回复
现在知道了,
洋溢2016 2007-08-14
  • 打赏
  • 举报
回复
看了看
「已注销」 2007-08-14
  • 打赏
  • 举报
回复
codeproject在哪,我刚到这个论坛,所以不太清楚
luyesql 2007-08-14
  • 打赏
  • 举报
回复
上次在codeproject上面有看到过,
你到codeproject上面搜索一下:NewRowGridView这个关键词应该可以找到.
「已注销」 2007-08-14
  • 打赏
  • 举报
回复
addNum是需要添加的空行的数
但这样的程序只能输出一行空白行,不能输出多行,
我不知道为什么会这样,所以请教大家帮帮忙
caobin518 2007-08-14
  • 打赏
  • 举报
回复
int addNum = this.DataGrid.PageSize - (colNum%this.DataGrid.PageSize);

其中addNum的值是多少?
caobin518 2007-08-14
  • 打赏
  • 举报
回复
上面已经特别清楚了..直接套不就行了.
「已注销」 2007-08-14
  • 打赏
  • 举报
回复
DataTable dt = con.GetInfo1();
this.DataGrid.DataSource=dt;
this.DataGrid.DataBind();
DataView dv= dt.DefaultView;
dv.RowFilter = "Operate_Time >= '"+ Convert.ToDateTime(strSelect)+ "'";

this.DataGrid.DataSource=dv;
this.DataGrid.DataBind();

//将DataView型转换成DataTable型
DataTable dataT=dv.Table;
DataView dataV=new DataView();

int colNum = this.DataGrid.Items.Count;
if(colNum == 0||(colNum%this.DataGrid.PageSize) != 0)
{
int addNum = this.DataGrid.PageSize - (colNum%this.DataGrid.PageSize);

//增加空白行
for(int i = 0;i < addNum;i++)
{
dv = dataT.DefaultView;

dv.AddNew();
}
}
this.DataGrid.DataSource=dv;
this.DataGrid.DataBind();

其中con.GetInfo1()中的内容为:
public DataTable GetInfo1()
{ SqlConnection sqlCon=null;
string str = "server=.;database=AurineWeb;user id=sa;pwd=sa";
if(sqlCon == null)
{
sqlCon=new SqlConnection(str);
sqlCon.Open();
}

string str1 = "select * from OperateRecord";
sqlDataA = new SqlDataAdapter(str1,sqlCon);
//sqlDataA.MissingSchemaAction=MissingSchemaAction.AddWithKey;
dataS.Clear();
sqlDataA.Fill(dataS,"OperateRecord");
return dataS.Tables["OperateRecord"];
}

不知道为什么,只能输出一行空白行,不能输出多行
请大家帮帮忙
「已注销」 2007-08-14
  • 打赏
  • 举报
回复
用DataView怎么做最后都只能显示一行
所以我改用DataTable做,代码如下:
DataTable dt = con.GetInfo(strSelect);
this.DataGrid.DataSource=dt;
this.DataGrid.DataBind();

int colNum = this.DataGrid.Items.Count;
if(colNum <= 0)
{
this.lblMessage.Text = "没有您要查询的记录!";
}

if(colNum == 0||(colNum%this.DataGrid.PageSize) != 0)
{
int addNum = this.DataGrid.PageSize - (colNum%this.DataGrid.PageSize);

//增加空白行
for(int i = 0;i < addNum;i++)
{
dt.Rows.InsertAt(dt.NewRow(),0);
}
}

this.DataGrid.DataSource=dt;
this.DataGrid.DataBind();

其中GetInfo(str)为:
public DataTable GetInfo(string str)
{
str=str+" 20:00:00";
string str1 = "select * from OperateRecord where Operate_Time                   >= '"+Convert.ToDateTime(str)+"'";

sqlDataA = new SqlDataAdapter(str1,sqlCon);
// sqlDataA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
dataS.Clear();
sqlDataA.Fill(dataS,"OperateRecord");

return dataS.Tables["OperateRecord"];
}

这样做结果就可以了
「已注销」 2007-08-13
  • 打赏
  • 举报
回复
caobin518(linlin) :
你的程序我在机子上试了一下是可以的,但不知为什么把相关的程序放到我原来的程序中就不行
「已注销」 2007-08-13
  • 打赏
  • 举报
回复
我试过了,但还是只能显示一行空白行,无论你循环多少次.不能显示两行以上
caobin518 2007-08-13
  • 打赏
  • 举报
回复
sorry!刚才我写的有点问题.如下程序编译通过.

protected void Page_Load(object sender, EventArgs e)
{
DataTable oDT = MakeDataTable();

this.GridView1.DataSource = oDT;
this.GridView1.DataBind();

int n = this.GridView1.Rows.Count;

DataView dv = new DataView();
for (int i = 0; i < 3; i++)
{
dv = oDT.DefaultView;
dv.AddNew();
}

this.GridView1.DataSource = dv;

this.GridView1.DataBind();

//int m = this.GridView1.Rows.Count;


}

private DataTable MakeDataTable()
{
// Create new DataTable.
DataTable table = new DataTable();

// Declare DataColumn and DataRow variables.
DataColumn column;
DataRow row;

// Create new DataColumn, set DataType, ColumnName
// and add to DataTable.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
table.Columns.Add(column);

// Create second column.
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "item";
table.Columns.Add(column);

// Create new DataRow objects and add to DataTable.
for (int i = 0; i < 10; i++)
{
row = table.NewRow();
row["id"] = i;
row["item"] = "item " + i;
table.Rows.Add(row);
}

return table;
// Set to DataGrid.DataSource property to the table.
}
caowenkai 2007-08-13
  • 打赏
  • 举报
回复
没注意看题不好意思哈,再来次
ds = 数据源;
DataRow oRow = ds.Tables[0].NewRow();
int i = this.GridView.Items.Count;
if(i == 0||(i%this.DataGrid.PageSize)!=0)
{
int j = this.GridView.PageSize-(i%this.GridView.PageSize);
for(int k=0;k<j;k++)
{
oRow[k] = "";
}
ds.Tables[0].Rows.Add(oRow);
DataView dv;
dv = ds.Tables[0].DefaultView;
GridView.DataSource = dv;
GridView.DataBind();
caowenkai 2007-08-13
  • 打赏
  • 举报
回复
ds = 数据源;
DataRow oRow = ds.Tables[0].NewRow();
oRow[0] = "";
oRow[1] = "";
oRow[2] = "";
ds.Tables[0].Rows.Add(oRow);
DataView dv;
dv = ds.Tables[0].DefaultView;
dv.Sort = "第一列列名 asc";
GridView.DataSource = dv;
GridView.DataBind();
Jinglecat 2007-08-13
  • 打赏
  • 举报
回复
ASP.NET DEMO Ⅲ:显示固定行数的GridView(DataGrid)
http://www.cnblogs.com/Jinglecat/archive/2007/05/30/765595.html
caobin518 2007-08-13
  • 打赏
  • 举报
回复
DataTable dt = new DataTable();
//添加表项
…………
DataView dv;
int colNum=this.DataGrid.Items.Count;
if(colNum==0||(colNum%this.DataGrid.PageSize)!=0)
{
int addNum=this.DataGrid.PageSize-(colNum%this.DataGrid.PageSize);

//增加空白行
for(int i=0;i<addNum;i++)//无论addNum怎么变都只能加一行,
{
dv=dt.DefaultView
dv.AddNew();
}

this.DataGrid.DataSource=dv;
this.DataGrid.DataBind();
wusongwtl 2007-08-13
  • 打赏
  • 举报
回复
这样做可能会改变数据库中的内容,
===================================
怎麽會呢?
你取得的數據放在datatable裏,添加空格后幫到datagrid后這個數據就丟失了

「已注销」 2007-08-13
  • 打赏
  • 举报
回复
这样做可能会改变数据库中的内容,
有没有什么办法可以不改变数据库中的内容,但可以改变页面显示出来的内容
加载更多回复(6)

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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