做毕业设计办公自动化系统,使用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>
机构简称:<asp:TextBox ID="txtBranchShortName" runat="server"></asp:TextBox>
<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>");
}
}
数据访问层的代码我就不附了
还有个问题,添加成功之后弹出的提示窗口却显示“添加失败”,想不通……
protected void Page_Load(object sender, EventArgs e)
{
if(!page.ISPostBack)
{GetAllBranchs();}
}
没看出什么问题,你可以在绑定方法那加一个断点。
gvBranchInfo.DataSource = branchInfos;
这个位置,运行到这后,你鼠标确定以下branchInfos数据聚合是不是最新的数据集合。
<input type="submit" id="btnAdd" runat="server" class="buttonCss" value="添加" onclick="return Check();" onserverclick="btnAdd_ServerClick"/>
红色区域什么意思,在判断什么?
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{ GetAllBranchs();}
}
试下,至于添加成功但提示错误的情况应该是你的底层的判断可能写反了,建议打断点跟进去看看
添加代码执行完后再绑定一次数据源
哇哈哈..我是路过了
页面代码没问题的。看数据访问层。
首先页面初始化时第一次绑定显示数据正常吗?是不是少一行?
然后如果少一行,就查看你的GetAllBranchs()方法,可能有读取数据错误
如果不少,但添加后一条不出数,再添加则出数上一条,可能是插入函数有问题,在插入后没有commit?
细心点应该没问题的。
asp:Button入面尝试使用OnClientClick触发客户端的脚本。如果对于你这个验证代码还是行不通,就在Page_Load时加入
Page.Form.Attribute["onsubmit"]="return JS函数";
实现提交前表单验证。
Save Button在判断成功添加后,最好是调用一下Response.Redirect("");
重定向一次到本页。