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

时间:2011-05-31 09:36:25

标签: c# asp.net

你好 我不知道这是否是一个已知的问题 - 但是当我点击编辑按钮一次 - 服务器重新加载列表视图 - 当我再次点击编辑按钮时,我收到EditTemplate,我可以编辑列表view ...这是一种已知行为吗?

此外:c#后面正在完成整个编辑周期(加载特殊编辑数据) - 但我仍然只看到通常的“视图”。

//为问题添加了一些内容

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();
}

这是编辑功能 - 一旦用户按下“编辑”按钮就会调用它 - 它在两次尝试时都已完成..但是只有第二次尝试才​​会返回“EditItemTemplate”。

对于编辑事件,page_load函数是不必要的 - 因为编辑事件是一个回发事件 - 因此在两种情况下都会跳过页面加载。

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)
            {
              ...
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

将其添加到ItemEditing处理程序的开头:

speiseplanListView.EditIndex = e.NewEditIndex;

另外,验证speiseplanListView.DataBind();在页面加载处理程序中没有调用回发。

最后,this tutorial可能对您有一定价值