girdview数据重新绑定的问题

xshf12345 2010-04-21 01:29:56
girdview数据重新绑定后数据不更新,我已经重新绑定了。。
代码:
读取数据
/// <summary>
/// 从指定表中读取数据,读取的数据放到datatable中
/// </summary>
/// <param name="table">表名</param>
/// <param name="cmdText">命令(为select语句)</param>
/// <param name="dt">存储读取到得数据</param>
/// <returns>返回是否读取成功</returns>
public static bool Read(string table, string cmdText, DataTable dt)
{
conn = new OleDbConnection(connectionString);
conn.Open();
OleDbCommand cmd = new OleDbCommand(cmdText, conn);//创建command
OleDbDataAdapter oda = new OleDbDataAdapter(cmd);
try
{
oda.Fill(dt);//填充数据
oda.Update(dt);
return true;//返回读取成功
}
catch (OleDbException ode)
{
return false;
throw new Exception(ode.Message);
}
finally
{
oda.Dispose();
conn.Close();
}

}

aspx前台代码
<asp:GridView ID="gv_News" runat="server" CellPadding="4" EnableModelValidation="True"
ForeColor="#333333" GridLines="None" AllowPaging="True" AutoGenerateColumns="false"
OnPageIndexChanging="gv_News_PageIndexChanging" PageSize="15"
OnRowCommand="gv_News_RowCommand" DataKeyNames="news_id"
onrowdeleting="gv_News_RowDeleting">
<Columns>
<asp:BoundField HeaderText="新闻标题" DataField="news_title" />
<asp:BoundField HeaderText="发布时间" DataField="news_time" />
<asp:BoundField HeaderText="阅读次数" DataField="news_readtimes" />
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<a href="javascript:;" onclick="newsEdit(<%#Eval("news_id") %>)">编辑</a>| <a href="javascript:;"
onclick="newsDel(<%#Eval("news_id") %>)">删除</a>|
<asp:LinkButton runat="server" Text="删除" CommandArgument='<%#Eval("news_id") %>'
CommandName="Del"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="自带的删除" ShowDeleteButton="True" ButtonType="Button" />
</Columns>
<AlternatingRowStyle BackColor="White" />
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>



asp.net后台

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
gv_NewsInit();//初始化新闻
}
}

protected void gv_NewsInit()
{
string cmdText = "select * from tb_news order by news_id desc";
DataTable dt = new DataTable();
dt.Clear();

if (DbHelper.Read("tb_news", cmdText, dt))
{
if (dt != null)
{
gv_News.DataSource = null;

gv_News.DataSource = dt;
gv_News.DataBind();
}
}
}
//新增新闻
protected void bt_sumbitNews_Click(object sender, EventArgs e)
{
string news_title = mcmNewsTitle.Value.ToString();//新闻标题
string news_content = mcmNewsContent.Value.ToString();//新闻内容
DateTime news_time=DateTime.Now;//发表新闻的时间

//做些服务器端的检查

string cmdText = "insert into tb_news (news_title, news_content, news_time,news_readtimes) values('" + news_title + "','" + news_content + "','" + news_time + "',0)";

if (DbHelper.RunSql(cmdText))
{
Response.Write("<script>alert('添加成功!')</script>");
}
gv_NewsInit();
}

注:我在调试的时候发现重新绑定的dt已经是最新的,而且一步步调试下去一切执行正常....
就是在运行的时候不能正常运行
...全文
188 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxiaohui8709253 2010-04-21
  • 打赏
  • 举报
回复
试下ref吧 刚才那个datatable还在?
xshf12345 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 sk_aqi 的回复:]
试下啊
[/Quote]
非常感谢你的帮助,是因为数据库连接没有关的原因,好拉,结账
SK_Aqi 2010-04-21
  • 打赏
  • 举报
回复
试下啊
xshf12345 2010-04-21
  • 打赏
  • 举报
回复
貌似是因为conn没有及时关掉的原因
harderLi 2010-04-21
  • 打赏
  • 举报
回复
可能是缓存的原因
还有就是 Dispose 释放资源
Peter200694013 2010-04-21
  • 打赏
  • 举报
回复
更正下:
在你点按钮后有没有进page_load方法的if体中?
wwwww12346 2010-04-21
  • 打赏
  • 举报
回复
没有看出具体的问题。个人认为是不是dt不是最新的值。他是copy的。而没有更改。

个人呢愚见。你试试加入ref
如果不使用ref /out,因为传递的是引用类型的地址值,则将传递引用类型的地址值的一个COPY(--针对地址值的角度还是值类型传递),实际上就是新开一个不同的内存变量来存储这个地址值的拷贝

而使用ref /out,传递的还是引用类型的地址值,但是传递的就不是一个新变量来存拷贝,而是就是传原来的那个应用类型的地址值

public static bool Read(string table, string cmdText, ref DataTable dt)


protected void gv_NewsInit()
{
string cmdText = "select * from tb_news order by news_id desc";
DataTable dt = new DataTable();
dt.Clear();

if (DbHelper.Read("tb_news", cmdText, ref dt))
{
if (dt != null)
{
gv_News.DataSource = null;

gv_News.DataSource = dt;
gv_News.DataBind();
}
}
}
Peter200694013 2010-04-21
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
gv_NewsInit();//初始化新闻
}
}
在你点按钮后有没有进page_load方法啊?是不是这的问题?
maomao90 2010-04-21
  • 打赏
  • 举报
回复
update一下dataset,然后再绑定,看看行不?
Peter200694013 2010-04-21
  • 打赏
  • 举报
回复
你每次都是DataTable dt = new DataTable();
就不用oda.Update(dt)了
xshf12345 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 peter200694013 的回复:]
重新绑定,刷新页面后应该是最新的啊!没遇到过这种问题...
[/Quote]
我以前也没碰到这种情况,不知道为什么,唉。。。
Peter200694013 2010-04-21
  • 打赏
  • 举报
回复
重新绑定,刷新页面后应该是最新的啊!没遇到过这种问题...
SK_Aqi 2010-04-21
  • 打赏
  • 举报
回复
不知道为什么要写上oda.Update(dt);
应该是:RunSql里面即时关闭才行,像Read方法一样:
oda.Dispose();
conn.Close();
xshf12345 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 peter200694013 的回复:]
运行的时候不能正常运行?什么错误?
[/Quote]
就是新增一条纪录,数据已经写到数据库中,但是gridview不更新。。。
xshf12345 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sk_aqi 的回复:]
已经是最新的,而且一步步调试下去一切执行正常....
就是在运行的时候不能正常运行
--------------------------------
想想看为什么回这样?这样的情况一般都是:
操作后即时关闭数据库连接,这样数据库才真正的插入到库中。。。
再次查询就会正常了!
[/Quote]
数据确实写到数据库中了,而且使用gv_News.DataSource = dt;
gv_News.DataBind();
绑定后gv_News中的数据也是最新的数据,但是为什么显示的时候不是显示最新的,是不是什么地方设置缓存的问题
Peter200694013 2010-04-21
  • 打赏
  • 举报
回复
运行的时候不能正常运行?什么错误?
xshf12345 2010-04-21
  • 打赏
  • 举报
回复
那看看我的Read(string table, string cmdText, DataTable dt)
写的对不?
xshf12345 2010-04-21
  • 打赏
  • 举报
回复
原来只有一个,也是有问题,所以索性让它为空后再赋值,这个没什么影响的
SK_Aqi 2010-04-21
  • 打赏
  • 举报
回复
已经是最新的,而且一步步调试下去一切执行正常....
就是在运行的时候不能正常运行
--------------------------------
想想看为什么回这样?这样的情况一般都是:
操作后即时关闭数据库连接,这样数据库才真正的插入到库中。。。
再次查询就会正常了!
SK_Aqi 2010-04-21
  • 打赏
  • 举报
回复
                    gv_News.DataSource = null;

gv_News.DataSource = dt;

这里为什么写两个DataSource?

62,046

社区成员

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

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

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

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