GridView绑定DataTable奇怪问题

happy61 2009-03-04 04:33:15
首先贴出出现歧义的2段代码。均为往数据库添加内容

    protected void PostNew_Click(object sender, EventArgs e)
{
string sql = "INSERT INTO News (News_Title, News_Poster, News_content, Type) VALUES ('{0}', {1}, '{2}', {3})";
sql = string.Format(sql, TextBox1.Text, Page.Session["UserId"].ToString(), TextBox2.Text, Page.Request["type"]);

Connection conn = new Connection();
if (conn.SQLExecuteNonQuery(sql) == 1)
{
WebPublic.MsgOKBox("成功", "成功发表了新的文章", Page);
sql = @"
SELECT News.ID AS 新闻ID,News.News_Title AS 新闻标题, News.News_PostTime AS 发表时间,
[User].NiceName AS 发表人
FROM ((News INNER JOIN
News_Type ON News.Type = News_Type.ID) INNER JOIN
[User] ON News.News_Poster = [User].UserID)
WHERE (News.Type = " + Page.Request["type"] + ")";

GridView1.DataSource = conn.SqlDataSet(sql);
GridView1.DataBind();
}
else
{
WebPublic.MsgErrBox("失败", "发表文章失败了...", Page);
}

}




以上代码,很正常,在添加后,GridViwe可以显示出新增数据。。

但是以下就显示不了,需要刷新才可以显示。。

    protected void PostNew_Click(object sender, EventArgs e)
{
string sql = "INSERT INTO News (News_Title, News_Poster, News_content, Type) VALUES ('{0}', {1}, '{2}', {3})";
sql = string.Format(sql, TextBox1.Text, Page.Session["UserId"].ToString(), TextBox2.Text, Page.Request["type"]);

Connection conn = new Connection();
if (conn.SQLExecuteNonQuery(sql) == 1)
{
WebPublic.MsgOKBox("成功", "成功发表了新的文章", Page);
grdatabind()

}
else
{
WebPublic.MsgErrBox("失败", "发表文章失败了...", Page);
}

}
private void grdatabind()
{
string sql = @"
SELECT News.ID AS 新闻ID,News.News_Title AS 新闻标题, News.News_PostTime AS 发表时间,
[User].NiceName AS 发表人
FROM ((News INNER JOIN
News_Type ON News.Type = News_Type.ID) INNER JOIN
[User] ON News.News_Poster = [User].UserID)
WHERE (News.Type = " + Page.Request["type"] + ")";
Connection conn = new Connection();
GridView1.DataSource = conn.SqlDataSet(sql);
GridView1.DataBind();

}




我将DataBInd代码放入函数,就导致刷新不了??为什么那么奇怪??
...全文
124 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy61 2009-03-04
  • 打赏
  • 举报
回复
3楼是正解。。。为什么会这样子呢????
happy61 2009-03-04
  • 打赏
  • 举报
回复
    static public void MsgOKBox(string title, string mes, System.Web.UI.Page page)
{
string str = @"
<script type='text/javascript'>
Ext.onReady(function(){
top.Ext.MessageBox.show(
{
title: '" + title + @"',
msg: '" + mes + @"',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.INFO
}) });
</script>";

page.ClientScript.RegisterStartupScript(page.GetType(), "MesOKBox", str);
}


将这段也贴上吧。。。

SQL是VS自动生成的。。。
angellan 2009-03-04
  • 打赏
  • 举报
回复
grdatabind() ; //这个方法放上面
WebPublic.MsgOKBox("成功", "成功发表了新的文章", Page);
angellan 2009-03-04
  • 打赏
  • 举报
回复
if (conn.SQLExecuteNonQuery(sql) == 1)
{
WebPublic.MsgOKBox("成功", "成功发表了新的文章", Page); //估计执行完这句代码,它直接返回到页面去了,把位置换下,试试看 grdatabind();

}
else
{
WebPublic.MsgErrBox("失败", "发表文章失败了...", Page);
}

换成下面这样:

if (conn.SQLExecuteNonQuery(sql) == 1)
{
grdatabind();
WebPublic.MsgOKBox("成功", "成功发表了新的文章", Page);
}
else
{
WebPublic.MsgErrBox("失败", "发表文章失败了...", Page);
}
HsWong 2009-03-04
  • 打赏
  • 举报
回复
楼主写的SQL语句效率太低了
hecong875 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hecong875 的回复:]
引用 1 楼 chenwei175528 的回复:
为啥第二段代码新建了两个 Conn

不知道是不是这个原因?


因为他执行了2次SQL 一次是插入数据...一次是获取数据
他没有公共的数据库类,也没有声明成公共变量... 所以只能声明2次.
[/Quote]

看错了.... 这里当我没说...
hecong875 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chenwei175528 的回复:]
为啥第二段代码新建了两个 Conn

不知道是不是这个原因?
[/Quote]

因为他执行了2次SQL 一次是插入数据...一次是获取数据
他没有公共的数据库类,也没有声明成公共变量... 所以只能声明2次.
criedshy 2009-03-04
  • 打赏
  • 举报
回复
改一下grdatabind()方法

调用时grdatabind(conn);

private void grdatabind(Connection conn) 
{
string sql = @"
SELECT News.ID AS 新闻ID,News.News_Title AS 新闻标题, News.News_PostTime AS 发表时间,
[User].NiceName AS 发表人
FROM ((News INNER JOIN
News_Type ON News.Type = News_Type.ID) INNER JOIN
[User] ON News.News_Poster = [User].UserID)
WHERE (News.Type = " + Page.Request["type"] + ")";

GridView1.DataSource = conn.SqlDataSet(sql);
GridView1.DataBind();

}
hecong875 2009-03-04
  • 打赏
  • 举报
回复
不应该啊....

protected void PostNew_Click(object sender, EventArgs e)
{
string sql = "INSERT INTO News (News_Title, News_Poster, News_content, Type) VALUES ('{0}', {1}, '{2}', {3})";
sql = string.Format(sql, TextBox1.Text, Page.Session["UserId"].ToString(), TextBox2.Text, Page.Request["type"]);

Connection conn = new Connection();
if (conn.SQLExecuteNonQuery(sql) == 1)
{
grdatabind() ;
WebPublic.MsgOKBox("成功", "成功发表了新的文章", Page);


}
else
{
WebPublic.MsgErrBox("失败", "发表文章失败了...", Page);
}

}
private void grdatabind()
{
string sql = @"
SELECT News.ID AS 新闻ID,News.News_Title AS 新闻标题, News.News_PostTime AS 发表时间,
[User].NiceName AS 发表人
FROM ((News INNER JOIN
News_Type ON News.Type = News_Type.ID) INNER JOIN
[User] ON News.News_Poster = [User].UserID)
WHERE (News.Type = " + Page.Request["type"] + ")";
Connection conn = new Connection();
GridView1.DataSource = conn.SqlDataSet(sql);
GridView1.DataBind();

}





这样试试!
chenwei175528 2009-03-04
  • 打赏
  • 举报
回复
为啥第二段代码新建了两个 Conn

不知道是不是这个原因?

62,268

社区成员

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

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

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

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