不只是“删除”后数据没有刷新,连“更新”、“创建”等情况也一样,急,在线等待!界面(admin_Menu.aspx):
<%@ Page language="c#" Codebehind="admin_Menu.aspx.cs" AutoEventWireup="false" Inherits="DT.Admin_Menu" %>
<%@ Import namespace="DT" %>
<HTML><HEAD></HEAD><body bgColor="#d6dff7"><form runat="server">
<table width="90%" align="center" cellspacing="0" cellpadding="0">
<tr valign="middle">
<td colspan="3" class="tp">
<span class="title">>>菜单管理</span>
</td>
</tr>
<tr>
<td class="tl"></td>
<td height="30" align="center" valign="middle">
<asp:Label id="MsgText" runat="server" Height="25" CssClass="Message"></asp:Label>
</td>
<td class="tr"></td>
</tr>
<tr>
<td class="tl"></td>
<td>
<table align="center" cellspacing="0" cellpadding="0">
<TBODY>
<tr>
<td>
<asp:DataList id="MenuList" runat="server" Width="100%" Height="100%">
<HeaderTemplate>
<TABLE id="MenuTable" cellSpacing="1" cellPadding="3" width="100%" border="0">
<TR>
<TD width="10%">ID</TD>
<TD>名称</TD>
<TD width="20%">URL</TD>
<td width="30%">描述</td>
<td width="40%">动作</td>
</TR>
</HeaderTemplate>
<FooterTemplate>
<tr>
<TD>ID</TD>
<TD><asp:TextBox Runat="server" ID="NewMenuName"></asp:TextBox></TD>
<TD><asp:TextBox Runat="server" ID="NewMenuURL"></asp:TextBox></TD>
<td><asp:TextBox Runat="server" ID="NewMenuRe"></asp:TextBox></td>
<td><asp:Button ID="CreateMenu" runat="server" width="60" Text='创建'></asp:Button></td>
</tr>
</table>
</FooterTemplate>
<ItemTemplate>
<tr>
<TD><asp:TextBox ID="OldMenuId" runat="server" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>'></asp:TextBox><%# DataBinder.Eval(Container.DataItem, "ID") %></TD>
<TD><asp:TextBox ID="OldMenuName" runat="server" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'></asp:TextBox><%# DataBinder.Eval(Container.DataItem, "Name") %></TD>
<TD><%# DataBinder.Eval(Container.DataItem, "URL") %></TD>
<TD><%# DataBinder.Eval(Container.DataItem, "Re") %></TD>
<TD><asp:Button id="EditMenu" CommandName="Edit" runat="server" width="60" Text='编辑'></asp:Button>
<asp:Button id="DeleteMenu" CommandName="Delete" runat="server" width="60" Text='删除'></asp:Button></TD>
</tr>
</ItemTemplate>
<EditItemTemplate>
<TR>
<TD><asp:TextBox ID="MenuID" Runat="server" Visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>'></asp:TextBox><%# DataBinder.Eval(Container.DataItem, "ID") %></TD>
<TD><asp:TextBox ID="MenuName" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'></asp:TextBox></TD>
<TD><asp:TextBox ID="MenuURL" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "URL") %>'></asp:TextBox></TD>
<TD><asp:TextBox ID="MenuRe" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Re") %>'></asp:TextBox></TD>
<TD><asp:Button id="UpdateMenu" runat="server" CommandName="Update" width="60" Text='更新'></asp:Button>
<asp:Button id="CancelMenu" runat="server" CommandName="Cancel" width="60" Text='取消'></asp:Button></TD>
</TR>
</EditItemTemplate>
</asp:DataList>
</td>
</tr>
</table>
</TD>
<td class="tr"></td>
</TR>
<tr>
<td colspan="3" class="tm"></td>
</tr>
</TBODY></TABLE></form></body></HTML>
<%@ Page language="c#" Codebehind="admin_Menu.aspx.cs" AutoEventWireup="false" Inherits="DT.Admin_Menu" %>
<%@ Import namespace="DT" %>
<HTML><HEAD></HEAD><body bgColor="#d6dff7"><form runat="server">
<table width="90%" align="center" cellspacing="0" cellpadding="0">
<tr valign="middle">
<td colspan="3" class="tp">
<span class="title">>>菜单管理</span>
</td>
</tr>
<tr>
<td class="tl"></td>
<td height="30" align="center" valign="middle">
<asp:Label id="MsgText" runat="server" Height="25" CssClass="Message"></asp:Label>
</td>
<td class="tr"></td>
</tr>
<tr>
<td class="tl"></td>
<td>
<table align="center" cellspacing="0" cellpadding="0">
<TBODY>
<tr>
<td>
<asp:DataList id="MenuList" runat="server" Width="100%" Height="100%">
<HeaderTemplate>
<TABLE id="MenuTable" cellSpacing="1" cellPadding="3" width="100%" border="0">
<TR>
<TD width="10%">ID</TD>
<TD>名称</TD>
<TD width="20%">URL</TD>
<td width="30%">描述</td>
<td width="40%">动作</td>
</TR>
</HeaderTemplate>
<FooterTemplate>
<tr>
<TD>ID</TD>
<TD><asp:TextBox Runat="server" ID="NewMenuName"></asp:TextBox></TD>
<TD><asp:TextBox Runat="server" ID="NewMenuURL"></asp:TextBox></TD>
<td><asp:TextBox Runat="server" ID="NewMenuRe"></asp:TextBox></td>
<td><asp:Button ID="CreateMenu" runat="server" width="60" Text='创建'></asp:Button></td>
</tr>
</table>
</FooterTemplate>
<ItemTemplate>
<tr>
<TD><asp:TextBox ID="OldMenuId" runat="server" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>'></asp:TextBox><%# DataBinder.Eval(Container.DataItem, "ID") %></TD>
<TD><asp:TextBox ID="OldMenuName" runat="server" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'></asp:TextBox><%# DataBinder.Eval(Container.DataItem, "Name") %></TD>
<TD><%# DataBinder.Eval(Container.DataItem, "URL") %></TD>
<TD><%# DataBinder.Eval(Container.DataItem, "Re") %></TD>
<TD><asp:Button id="EditMenu" CommandName="Edit" runat="server" width="60" Text='编辑'></asp:Button>
<asp:Button id="DeleteMenu" CommandName="Delete" runat="server" width="60" Text='删除'></asp:Button></TD>
</tr>
</ItemTemplate>
<EditItemTemplate>
<TR>
<TD><asp:TextBox ID="MenuID" Runat="server" Visible="False" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>'></asp:TextBox><%# DataBinder.Eval(Container.DataItem, "ID") %></TD>
<TD><asp:TextBox ID="MenuName" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'></asp:TextBox></TD>
<TD><asp:TextBox ID="MenuURL" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "URL") %>'></asp:TextBox></TD>
<TD><asp:TextBox ID="MenuRe" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Re") %>'></asp:TextBox></TD>
<TD><asp:Button id="UpdateMenu" runat="server" CommandName="Update" width="60" Text='更新'></asp:Button>
<asp:Button id="CancelMenu" runat="server" CommandName="Cancel" width="60" Text='取消'></asp:Button></TD>
</TR>
</EditItemTemplate>
</asp:DataList>
</td>
</tr>
</table>
</TD>
<td class="tr"></td>
</TR>
<tr>
<td colspan="3" class="tm"></td>
</tr>
</TBODY></TABLE></form></body></HTML>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace DT
{
public class Admin_Menu : System.Web.UI.Page
{
protected static string ConnTemp = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("Data") + "\\data.mdb";
protected OleDbConnection OleDbConnectionTemp;
protected System.Data.OleDb.OleDbCommand OleDbCommandTemp;
protected System.Data.OleDb.OleDbDataAdapter OleDbDataAdapterTemp;
protected DataSet DataSetTemp;
protected System.Web.UI.WebControls.DataList MenuList;
protected System.Data.DataSet DataSet1;
protected System.Web.UI.WebControls.Label MsgText;
protected string sql = null;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!Page.IsPostBack)
{
BindData();
}
}
void BindData()
{
OleDbConnectionTemp = new OleDbConnection(ConnTemp);
sql = "SELECT ID,Name,URL,Re FROM DictData where Type=0";
OleDbDataAdapterTemp = new OleDbDataAdapter(sql,OleDbConnectionTemp);
DataSetTemp = new DataSet();
OleDbDataAdapterTemp.Fill(DataSetTemp);
MenuList.DataSource = DataSetTemp.Tables[0].DefaultView;
MenuList.DataBind();
OleDbConnectionTemp.Close();
}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.MenuList.EditCommand += new DataListCommandEventHandler(MenuList_EditCommand);
this.MenuList.DeleteCommand += new DataListCommandEventHandler(MenuList_DeleteCommand);
this.MenuList.UpdateCommand += new DataListCommandEventHandler(MenuList_UpdateCommand);
this.MenuList.CancelCommand += new DataListCommandEventHandler(MenuList_CancelCommand);
this.MenuList.ItemCommand +=new DataListCommandEventHandler(MenuList_ItemCommand);
this.MenuList.ItemCreated += new DataListItemEventHandler(MenuList_ItemCreated);
}
private void MenuList_EditCommand(object sender, DataListCommandEventArgs e)
{
this.MenuList.EditItemIndex = e.Item.ItemIndex;
BindData();
}
private void MenuList_DeleteCommand(object sender, DataListCommandEventArgs e)
{
TextBox OldMenuID = (TextBox)e.Item.FindControl("OldMenuID");
TextBox OldMenuName = (TextBox)e.Item.FindControl("OldMenuName");
sql = "DELETE FROM DICTDATA WHERE [ID]="+OldMenuID.Text.Trim();
try
{
Pub.ExeSql(sql);
}
catch (Exception ex)
{
this.MsgText.Text = "菜单:"+OldMenuName.Text.Trim()+" 不删除成功,请重试!";
}
finally
{
this.MsgText.Text = "菜单:" + OldMenuName.Text.Trim() + " 删除成功!";
this.MenuList.EditItemIndex = -1;
BindData();
}
}
private void MenuList_UpdateCommand(object sender, DataListCommandEventArgs e)
{
TextBox MenuID = (TextBox)e.Item.FindControl("MenuID");
TextBox MenuName = (TextBox)e.Item.FindControl("MenuName");
TextBox MenuURL = (TextBox)e.Item.FindControl("MenuURL");
TextBox MenuRe = (TextBox)e.Item.FindControl("MenuRe");
sql = "UPDATE DICTDATA SET [NAME]='"+Pub.FormatSQL(MenuName.Text)+"',[URL]='"+Pub.FormatSQL(MenuURL.Text)+"',[Re]='"+Pub.FormatSQL(MenuRe.Text)+"' where [ID]="+MenuID.Text.Trim();
try
{
Pub.ExeSql(sql);
}
catch (Exception ex)
{
this.MsgText.Text = "菜单:"+MenuName.Text.Trim()+" 更新失败,请重试!";
}
finally
{
this.MsgText.Text = "菜单:" + MenuName.Text.Trim() + " 更新成功!";
this.MenuList.EditItemIndex = -1;
BindData();
}
}
private void MenuList_CancelCommand(object sender, DataListCommandEventArgs e)
{
this.MenuList.EditItemIndex = -1;
BindData();
}
private void MenuList_ItemCommand(object sender, DataListCommandEventArgs e)
{
if (e.Item.ItemType == ListItemType.Footer )
{
TextBox NewMenuName = (TextBox)e.Item.FindControl("NewMenuName");
TextBox NewMenuURL = (TextBox)e.Item.FindControl("NewMenuURL");
TextBox NewMenuRe = (TextBox)e.Item.FindControl("NewMenuRe");
sql = "Insert into DICTDATA ([Name],[URL],[Re]) values ('"+Pub.FormatSQL(NewMenuName.Text.Trim())+"','"+Pub.FormatSQL(NewMenuURL.Text.Trim())+"','"+Pub.FormatSQL(NewMenuRe.Text.Trim())+"')";
try
{
Pub.ExeSql(sql);
}
catch (Exception ex)
{
this.MsgText.Text = "菜单:"+NewMenuName.Text.Trim()+" 创建失败,请重试!";
}
finally
{
this.MsgText.Text = "菜单:" + NewMenuName.Text.Trim() + " 创建成功!";
this.MenuList.EditItemIndex = -1;
BindData();
}
}
}
private void MenuList_ItemCreated(Object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
Button DeleteMenu = (Button)e.Item.FindControl("DeleteMenu");
DeleteMenu.Attributes.Add("onclick","return confirm('确认要删除吗?')");
}
}
}
}
if (!Page.IsPostBack)
{
BindData();
}
就是这里那
this.MenuList.EditItemIndex = -1;
BindData();
放到你的try块里面.
{
Pub.ExeSql(sql);
BindData();//重新绑定试试看.创建和修改 }
catch (Exception ex)
{
this.MsgText.Text = "菜单:"+MenuName.Text.Trim()+" 更新失败,请重试!";
}
try
{
Pub.ExeSql(sql);
Response.Redirect("admin_menu.aspx");//试试看.创建和修改 }
catch (Exception ex)
{
this.MsgText.Text = "菜单:"+MenuName.Text.Trim()+" 更新失败,请重试!";
}
把
this.MenuList.EditItemIndex = -1;
BindData();
放在try语句中,测试过不行!To yipiaoqingshui:
Response.Redirect("admin_menu.aspx");
测试过也不行!我想是不是DataList的设置哪能里出问题了,而不是操作后重新绑定数据(重新绑定数据的语句我都写了,看上面的源程序)。
.Databind()
所以必须重新填充DATASET或DATATABLE,然后重新绑定!!!
private void MenuList_DeleteCommand(object sender, DataListCommandEventArgs e)
{
TextBox OldMenuID = (TextBox)e.Item.FindControl("OldMenuID");
TextBox OldMenuName = (TextBox)e.Item.FindControl("OldMenuName");
sql = "DELETE FROM DICTDATA WHERE [ID]="+OldMenuID.Text.Trim();
Pub.ExeSql(sql);
MenuList.EditItemIndex = -1;
OleDbConnection tempConn = new OleDbConnection(ConnTemp);
string tempSQL = "SELECT ID,Name,URL,Re FROM DictData where Type=0";
OleDbDataAdapter tempOleDbDataAdapter = new OleDbDataAdapter(tempSQL,tempConn);
DataSet tempDataSet = new DataSet();
tempOleDbDataAdapter.Fill(tempDataSet,"DictData");
MenuList.DataSource = tempDataSet.Tables["DictData"].DefaultView;
MenuList.DataBind();
this.MsgText.Text = "菜单:" + OldMenuName.Text.Trim() + " 删除成功!";
}删除后的数据绑定时用到ADO.NET的所有类我都重新定义过,问题还是一样!是不是整个ASPX页面设置有问题!
重新填充DATASET或DATATABLE,然后重新绑定!!!
OleDbConnection→OleDbDataAdapter→DataTable或DataSet→DataView→DataRowViewprivate void MenuList_UpdateCommand(object sender, DataListCommandEventArgs e)
{
TextBox MenuID = (TextBox)e.Item.FindControl("MenuID");
TextBox MenuName = (TextBox)e.Item.FindControl("MenuName");
TextBox MenuURL = (TextBox)e.Item.FindControl("MenuURL");
TextBox MenuRe = (TextBox)e.Item.FindControl("MenuRe");
sql = "UPDATE DICTDATA SET [NAME]='"+Pub.FormatSQL(MenuName.Text)+"',[URL]='"+Pub.FormatSQL(MenuURL.Text)+"',[Re]='"+Pub.FormatSQL(MenuRe.Text)+"' where [ID]="+MenuID.Text.Trim();
try
{
//更新DataTable
DataRowView[] findRow = DataView1.FindRows(MenuID.Text.Trim());
if (findRow.Length == 1)
{
DataRowView editRow = findRow[0];
editRow.BeginEdit();
editRow["Name"] = MenuName.Text.Trim();
editRow["URL"] = MenuURL.Text.Trim();
editRow["Re"] = MenuRe.Text.Trim();
editRow.EndEdit();
}
//更新后台数据库
OleDbCommand updateCommand = new OleDbCommand(sql,Pub.OleDbConnection1);
DataAdapter1.UpdateCommand = updateCommand;
DataAdapter1.Update(DataTable1);
//重新绑定DataList的DataSource
MenuList.EditItemIndex = -1;
BindList();
}
catch (Exception ex)
{
this.MsgText.Text = "菜单:"+MenuName.Text.Trim()+" 更新失败,请重试!";
}
finally
{
this.MsgText.Text = "菜单:" + MenuName.Text.Trim() + " 更新成功!";
}
}注明:通过Response.Redirect("admin_menu.aspx")等类似方法会增加IIS服务器的负荷,不可取,而且我在本机也没测试成功过!