首页 新闻 会员 周边 捐助

使用gridview展示数据时的问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2009-11-17 14:24

做毕业设计办公自动化系统,使用gridview显示所有部门的名称,具备增删改功能,问题是运行的时候点击增加按钮,已经插入数据库里了但是页面gridview里不显示,必须插入下一条数据之后才会显示上一个插入的数据。试了几种方法都解决不了,页面重定向或者重新绑定数据源之类的都不行,到底应该怎么解决呢?

使用的是三层架构,代码希望帮忙看看没有问题。

页面

<div>

      <div style="width:99%;height:30px; text-align:left;">当前位置:机构管理</div>
      <div style="text-align:center"><b>机 构 管 理</b></div> 
      <hr style="width:90%; text-align:center;" size="1px" color="gray" />
     
    机构名称:<asp:TextBox ID="txtBranchName" runat="server"></asp:TextBox>
    &nbsp;
    机构简称:<asp:TextBox ID="txtBranchShortName" runat="server"></asp:TextBox>
    &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;
   
    <input type="submit" id="btnAdd" runat="server" class="buttonCss" value="添加" onclick="return Check();" onserverclick="btnAdd_ServerClick"/>
   <div style="width:99%;" align="center" id="DIV1">  
    <asp:GridView ID="gvBranchInfo" runat="server" AutoGenerateColumns="False" BackColor="White"
        BorderColor="MediumTurquoise" Height="152px" Width="695px" DataKeyNames="branchId" OnRowCommand="gvBranchInfo_RowCommand" OnRowDataBound="gvBranchInfo_RowDataBound" >
        <Columns>
            <asp:BoundField DataField="branchname" HeaderText="机构名称" />
            <asp:BoundField DataField="branchshortname" HeaderText="机构简称" />
            <asp:TemplateField HeaderText="修改">
                <ItemTemplate>
                    <asp:ImageButton ID="imgbtnEdit" runat="server" CommandName="editBranch" Height="15px" ImageUrl="~/images/edit.gif" Width="15px" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="删除">
                <ItemTemplate>
                    <asp:ImageButton ID="imgbtnDelete" runat="server" CommandName="deleteBranch" Height="15px" ImageUrl="~/images/delete.gif" Width="15px" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    </div>
    <input id="hidBranchId" type="hidden"  runat="server"/>
 
</div>

后台代码

表示层

public partial class PersonManage_BranchManage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
         GetAllBranchs();
    }

    protected void GetAllBranchs()
    {
        IList<BranchInfo> branchInfos = BranchInfoManager.GetAllBranchs();
        gvBranchInfo.DataSource = branchInfos;
        gvBranchInfo.DataBind();
       
    }

    protected void btnAdd_ServerClick(object sender, EventArgs e)
    {
        BranchInfo branchInfo = new BranchInfo();
        branchInfo.BranchName = txtBranchName.Text.ToString();
        branchInfo.BranchShortName = txtBranchShortName.Text.ToString();
        int num = BranchInfoManager.AddBranch(branchInfo);
        if (num > 0)
        {
            txtBranchName.Text = "";
            txtBranchShortName.Text = "";
            GetAllBranchs();
          
        }
        else
        {
            Response.Write("<script>alert('添加失败!');</script>");
        }
    }

数据访问层的代码我就不附了

还有个问题,添加成功之后弹出的提示窗口却显示“添加失败”,想不通……

时有女子的主页 时有女子 | 初学一级 | 园豆:110
提问于:2009-11-12 16:30
< >
分享
所有回答(7)
0

  protected void Page_Load(object sender, EventArgs e)
    {
        if(!page.ISPostBack)

      {GetAllBranchs();}
         
    }

sl2008 | 园豆:407 (菜鸟二级) | 2009-11-12 16:48
这个我也试过了,结果不但没解决还出现新的问题了,很不正常啊……
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-12 16:59
很感谢所有热心帮忙的人,谢谢~
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-17 14:23
0

没看出什么问题,你可以在绑定方法那加一个断点。

gvBranchInfo.DataSource = branchInfos;
这个位置,运行到这后,你鼠标确定以下branchInfos数据聚合是不是最新的数据集合。

<input type="submit" id="btnAdd" runat="server" class="buttonCss" value="添加" onclick="return Check();" onserverclick="btnAdd_ServerClick"/>

红色区域什么意思,在判断什么?

邢少 | 园豆:10926 (专家六级) | 2009-11-12 17:02
这个是我上面做的一个JS验证,验证插入的部门名称不能为空,这个功能也没实现,空的也能插进去……这是我第一次用.NET做完整的项目,好多东西还不熟,以前在JSP里这样验证都可以实现的
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-12 20:52
就是这个 <script language="javascript" type="text/javascript"> function Check() { if (document.getElementById("txtBranchName").value== " " ) { alert("机构名称不能为空!"); return false; } else if (document.getElementById("txtBranchShortName").value == " ") { alert("机构简称不能为空!"); return false; } else { return true; } } </script>
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-12 20:53
@时有女子: 你用input 作服务端控件多别扭啊、为什么不用button呢?.你这个input在页面写触发客户端脚本,是调用不了的。xxx.Attributes.Add("onclick,"return xx();");
支持(0) 反对(0) 邢少 | 园豆:10926 (专家六级) | 2009-11-16 10:39
@时有女子:至于你没有绑定的问题,也就有两种可能:1、没有取道数据,你的数据层有问题;2、逻辑有问题,绑定后、又给取消了〔是否打开状态视图?是否回传控制了〕。
支持(0) 反对(0) 邢少 | 园豆:10926 (专家六级) | 2009-11-16 10:41
很感谢所有热心帮忙的人,谢谢~
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-17 14:22
0

protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)

    { GetAllBranchs();}
    }

试下,至于添加成功但提示错误的情况应该是你的底层的判断可能写反了,建议打断点跟进去看看

死神的背影 | 园豆:667 (小虾三级) | 2009-11-12 17:03
我做了判断,增加成功后返回值大于0就弹出成功对话框,否侧就是失败的,逻辑是没错的,也让别人帮忙看了代码,没看出什么问题。就是不知道怎么到处都是问题,郁闷……
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-12 20:57
@时有女子:你打断点看的 num的返回值是多少?
支持(0) 反对(0) 死神的背影 | 园豆:667 (小虾三级) | 2009-11-13 10:48
很感谢所有热心帮忙的人,谢谢~
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-17 14:23
0

添加代码执行完后再绑定一次数据源

howard-Wang | 园豆:415 (菜鸟二级) | 2009-11-12 17:12
很感谢所有热心帮忙的人,谢谢~
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-17 14:23
0

哇哈哈..我是路过了

DaCHun | 园豆:255 (菜鸟二级) | 2009-11-12 17:42
谢谢你捧场了……-_-!
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-17 14:23
0

页面代码没问题的。看数据访问层。

首先页面初始化时第一次绑定显示数据正常吗?是不是少一行?

然后如果少一行,就查看你的GetAllBranchs()方法,可能有读取数据错误

如果不少,但添加后一条不出数,再添加则出数上一条,可能是插入函数有问题,在插入后没有commit?

细心点应该没问题的。

Rambo'Ma | 园豆:215 (菜鸟二级) | 2009-11-13 11:34
很感谢所有热心帮忙的人,谢谢~
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-17 14:23
0

asp:Button入面尝试使用OnClientClick触发客户端的脚本。如果对于你这个验证代码还是行不通,就在Page_Load时加入
Page.Form.Attribute["onsubmit"]="return JS函数";
实现提交前表单验证。

Save Button在判断成功添加后,最好是调用一下Response.Redirect("");
重定向一次到本页。

ERic Poon | 园豆:261 (菜鸟二级) | 2009-11-13 16:06
很感谢所有热心帮忙的人,谢谢~
支持(0) 反对(0) 时有女子 | 园豆:110 (初学一级) | 2009-11-17 14:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册