ListView中的EditItem-不加载编辑模板

问题描述

| 你好, 我不知道这是否是已知问题-但是,当我单击一次“编辑”按钮时-服务器重新加载了列表视图-当我再次单击“编辑”按钮时,我收到了EditTemplate并且可以进行编辑列表视图...这是已知的行为吗? 此外:后面的c#正在整个编辑周期中工作(加载特殊的编辑数据)-但我仍然只看到通常的\“ view \\”。 //为问题添加了一些肉
public void test_ItemEditing(Object sender,ListViewEditEventArgs e)
{
    // returns the current key
    DataKey currentDataKey = speiseplanListView.DataKeys[e.NewEditIndex];

    // fetches the information - for the whole plane
    DataTable speiseplan = getSpeiseplan(0);
    DataTable preisgruppen = getPreisgruppen();

    extractTags(speiseplan);
    extractPreise(speiseplan,preisgruppen);
    speiseplanListView.DataSource = speiseplan;
    speiseplanListView.DataBind();
}
这是编辑功能-用户按下\“ edit \”按钮后即会调用---两次尝试均已完成..但是,仅第二次尝试会返回\“ EditItemTemplate \”。 对于edit事件,page_load函数是不必要的,因为edit事件是回发事件,因此在两种情况下都将跳过页面加载。
protected void Page_Load(object sender,EventArgs e)
{
    if (Session[\"USERID\"] == null)
    {
        FormsAuthentication.SignOut();
        FormsAuthentication.RedirectToLoginPage();
        Session.Abandon();
    }
    else
    {
        this.kantinenID = Convert.ToInt32(Request[\"id\"]);
        this.userID = Convert.ToInt16(Session[\"USERID\"]);
        if (IsPostBack == false)
        {
            try
            {
                switch (Request[\"action\"])
                {
                     ...                  
                }
            }
            catch (System.FormatException ex)
            {
              ...
            }
        }
    }
}
    

解决方法

        将其添加到ItemEditing处理程序的开头:
speiseplanListView.EditIndex = e.NewEditIndex;
另外,验证speiseplanListView.DataBind();页面加载处理程序中的回发时未调用。 最后,本教程可能对您有价值