今天写了一个小代码段暖暖手! 遇到一个奇怪的问题! 第一次用的vs2008+Access2003
代码很简单 添加和删除功能!一个表Test 字段 ID 自增,UserName,Age 就三个字段!新建一个网站,在Default.aspx页面    <div>
            <span><asp:Label   ID="lblName" runat="server" Text="姓名"> </asp:Label></span>
            <span><asp:TextBox ID="txtName" runat="server" Text=""></asp:TextBox></span>
            <span><asp:Label   ID="lblAge"  runat="server" Text="年龄"> </asp:Label></span>
            <span><asp:TextBox ID="txtAge"  runat="server" Text=""></asp:TextBox></span>
            <span><asp:Button  ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click"   /></span></div>
    <div>
        内容显示</div>
   
    <div>
        <asp:Repeater runat="server" ID="repeater1">
            <HeaderTemplate>
                <table border="1" cellpadding="1" cellspacing="1" style="border-collapse: collapse">
                    <tr>
                        <td style="width: 100px" align="center">
                            序号
                        </td>
                        <td style="width: 100px" align="center">
                            姓名
                        </td>
                        <td style="width: 100px" align="center">
                            年龄
                        </td>
                        <td style="width: 100px" align="center">
                            操作
                        </td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <%# Container.ItemIndex+1 %>
                    </td>
                    <td>
                        <%# Eval("UserName") %>
                    </td>
                    <td>
                        <%# Eval("Age") %>
                    </td>
                    <td>
                        <asp:LinkButton ID="lkdel" runat="server" CommandArgument='<%# Eval("id") %>' OnClick="lkdel_click">Delete</asp:LinkButton>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table></FooterTemplate>
        </asp:Repeater>
    </div>cs 代码
 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            repeater1.DataSource = GetCmdResult("select * from UserInfo");
            repeater1.DataBind();
        }
    }    /// <summary>
    /// 获取连接
    /// </summary>
    /// <returns></returns>
    private OleDbConnection GetCon()
    {
        OleDbConnection sqlcon = new OleDbConnection();
        sqlcon.ConnectionString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        if (sqlcon.State == ConnectionState.Closed) { sqlcon.Open(); }
        return sqlcon;
    }    /// <summary>
    /// 插叙命令
    /// </summary>
    /// <param name="strSql">sql语句</param>
    /// <returns></returns>
    private DataTable GetCmdResult(string strSql)
    {
        using (OleDbCommand cmd = new OleDbCommand())
        {
            cmd.CommandText = strSql;
            cmd.Connection = GetCon();
            cmd.CommandType = CommandType.Text;
            DataTable dt = new DataTable();
            dt.Load(cmd.ExecuteReader());
            return dt;
        }
    }
    /// <summary>
    /// 查询命令
    /// </summary>
    /// <param name="strSql">sql语句</param>
    /// <param name="param">参数</param>
    /// <returns></returns>
    private DataTable GetCmdResult(string strSql, OleDbParameter[] param)
    {
        using (OleDbCommand cmd = new OleDbCommand())
        {
            cmd.CommandText = strSql;
            cmd.Connection = GetCon();
            cmd.CommandType = CommandType.Text;
            foreach (OleDbParameter sp in param)
            {
                cmd.Parameters.AddWithValue(sp.ParameterName, sp.Value);
            }
            DataTable dt = new DataTable();
            dt.Load(cmd.ExecuteReader());
            return dt;
        }
    }    private int InsertData(string strSql, OleDbParameter[] param)
    {
        using (OleDbCommand cmd = new OleDbCommand())
        {
            cmd.CommandText = strSql;
            cmd.Connection = GetCon();
            cmd.CommandType = CommandType.Text;
            foreach (OleDbParameter sp in param)
            {
                cmd.Parameters.AddWithValue(sp.ParameterName, sp.Value);
            }
            return cmd.ExecuteNonQuery();
        }
    }    protected void btnSave_Click(object sender, EventArgs e)
    {
        string strSql = "insert into UserInfo(UserName,Age) values(@name,@age)";
        if (txtAge.Text.Trim().Length == 0 || txtName.Text.Trim().Length == 0) return;
        InsertData(strSql, new OleDbParameter[] { new OleDbParameter("@name", txtName.Text.Trim()), new OleDbParameter("@age", txtAge.Text.Trim()) }).ToString();        repeater1.DataSource = GetCmdResult("select * from UserInfo");
        repeater1.DataBind();
 
    }    protected void lkdel_click(object sender, EventArgs e)
    {        LinkButton lb = sender as LinkButton;
        string parm = lb.CommandArgument;
        string strSql = "delete from UserInfo where id=@id";
        InsertData(strSql, new OleDbParameter[] { new OleDbParameter("@id", parm) }).ToString();
        repeater1.DataSource = GetCmdResult("select * from UserInfo");
        repeater1.DataBind();
         }问题是 当我第一次点击 save 按钮之后,repeater里面的数据没有变化,但是表里已经有了!之后每次显示的都是上一次的数据!删除也是这样子的! 但是加断点调试之后就是正常的!不是调试模式下就不正常。
后来试了一下。Access2007也是这样的! 但是用sql server就没有这个问题,都是正常的!
这具体是什么问题啊!麻烦各位大牛们教一下小弟! 小弟学习asp.net 不久!想弄清楚问题在哪里!