ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(二)

使用ListView控件进行修改,删除与添加操作
1.页面代码:

复制代码
<asp:ListView ID="lv2" runat="server"
      onpagepropertieschanging="lv_PagePropertiesChanging2"
      onitemcanceling="lv2_ItemCanceling" onitemediting="lv2_ItemEditing"
      onitemupdating="lv2_ItemUpdating"
      onitemdeleting="lv2_ItemDeleting" DataKeyNames="id">
    <EditItemTemplate>
       <div class="lvData">
          <div class="id"><%#eval_r("id")%></div>
          <div class="proId"><%#eval_r("provinceID")%></div>
          <div class="proName">
              <asp:TextBox ID="txt" runat="server" Text='<%#eval_r("province")%>'></asp:TextBox></div>
              <div class="edit">
                 <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="Update" >更新</asp:LinkButton>
                 <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Cancel" >取消</asp:LinkButton>
              </div>
          </div>
    </EditItemTemplate>
       <ItemTemplate>
          <div class="lvData">
             <div class="id"><%#eval_r("id")%></div>
             <div class="proId"><%#eval_r("provinceID")%></div>
             <div class="proName"><%#eval_r("province")%></div>
             <div class="edit">
                 <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="Edit" >编辑</asp:LinkButton>
                 <asp:LinkButton ID="LinkButton2" runat="server" CommandName="Delete" >删除</asp:LinkButton>
             </div>
         </div>
     </ItemTemplate>
     <AlternatingItemTemplate>
        <div class="lvData alterStyle">
            <div class="id"><%#eval_r("id")%></div>
            <div class="proId"><%#eval_r("provinceID")%></div>
            <div class="proName"><%#eval_r("province")%></div>
            <div class="edit">
                <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="Edit" >编辑</asp:LinkButton>
                <asp:LinkButton ID="LinkButton3" runat="server" CommandName="Delete" >删除</asp:LinkButton>
            </div>
        </div>
    </AlternatingItemTemplate>  
</asp:ListView>
        <asp:DataPager ID="DataPager2" PagedControlID="lv2" runat="server">
        <Fields>
            <asp:NextPreviousPagerField ShowFirstPageButton="True" 
                ShowLastPageButton="True" ShowNextPageButton="True"
                ShowPreviousPageButton="True" />
        </Fields>
    </asp:DataPager>
复制代码

2.后置代码:

复制代码
public partial class index : System.Web.UI.Page
{
    DBHelper db = new DBHelper();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack )
        {
            Lv2Bind();//更新值
        }   
    }
   
    protected void lv_PagePropertiesChanging2(object sender, PagePropertiesChangingEventArgs e)
    {
        this.DataPager2.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
        Lv2Bind();
    }
   
    protected void lv2_ItemEditing(object sender, ListViewEditEventArgs e)
    {
        lv2.EditIndex = e.NewEditIndex;
        Lv2Bind();
    }
   
    protected void lv2_ItemUpdating(object sender, ListViewUpdateEventArgs e)
    {
        int index = e.ItemIndex;
        TextBox txtbox = lv2.Items[index].FindControl("txt") as TextBox;
        string proName = txtbox.Text;
        string id=lv2.DataKeys[index].Value.ToString();
        string sql = string.Format("UPDATE [Public].[dbo].[Province] SET [province] =@province WHERE id=@id");
        SqlParameter[] paras = {
                     new SqlParameter("@province",proName),
                     new SqlParameter("@id",id)
                    };
        if (db.ExecuteNonQuery(sql, paras) > 0)
        {
            this.divAlert.Attributes.CssStyle.Add("display", "block");
            Lv2Bind();
        }
        else
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>更新失败</script>");
            Lv2Bind();
        }
    }
   
    protected void lv2_ItemCanceling(object sender, ListViewCancelEventArgs e)
    {
        lv2.EditIndex = -1;
        Lv2Bind();
    }
   
    protected void lv2_ItemDeleting(object sender, ListViewDeleteEventArgs e)
    {
    }
   
    private void Lv2Bind()
    {
        this.lv2.DataSource = GetDT();
        this.lv2.DataBind();
    }
}
复制代码

注意要点:
1.在Page_Load事件中,要把控件绑定数据的方法放在ispostback方法里面,以避免在页面加载的时候首
都要加载原来的数据,修改的数据无法更新的情况。
2.使用DataPager控件给ListView控件分页时,需要编写ListView控件的lv_PagePropertiesChanging()
时间,以使在进行翻页操作时控件的数据能及时更新到相应页面。

posted on   逍遥云天  阅读(1913)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示