2010-12-09 31 views
3

请帮忙。我有以下 - ListView及其两个处理程序AdminUsersListView_ItemEditing,AdminUsersListView_Load。EditTemplate for ListView不适用

<asp:ListView ID="AdminUsersListView" runat="server" 
    onitemediting="AdminUsersListView_ItemEditing" onload="AdminUsersListView_Load" 
    DataKeyNames="UserId"> 
     <LayoutTemplate> 
      <table cellpadding="2" runat="server" id="usersTable"> 
      <tr runat="server" id="itemPlaceholder" /> 
      </table> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <tr> 
      <td><asp:LinkButton ID="EditButton" runat="server" Text="Edit" CommandName="Edit" /></td> 
      <td><asp:Label ID="NameLabel" runat="server" Text='<%# Eval("UserName") %>' /></td> 
      </tr> 
     </ItemTemplate> 
     <EditItemTemplate> 
      <tr> 
      <td><asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /><asp:LinkButton ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" /></td> 
      <td><asp:Label runat="server" ID="NameLabel" AssociatedControlID="NameTextBox" Text="Name"/><asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("UserName") %>' MaxLength="50" /></td> 
      </tr> 
     </EditItemTemplate> 
    </asp:ListView> 

后,它被我看到桌子和编辑按钮对各行通常的网页编译,我按一下按钮,回来后正在发送,但什么也没有发生。

处理程序如下:

protected void AdminUsersListView_ItemEditing(Object sender, ListViewEditEventArgs e) 
{ 
} 

protected void AdminUsersListView_Load(Object sender, EventArgs e) 
{ 
    try 
    { 
     Int32 itemCount = Request["itemCount"] == null ? 10 : Int32.Parse(Request["itemCount"]); 
     Int32 itemPage = Request["itemPage"] == null ? 0 : Int32.Parse(Request["itemPage"]); 
     List<String> currentRoleList = Roles.GetRolesForUser().ToList(); 
     UsersManager usersManager = new UsersManager(); 
     IEnumerable<DbDataRecord> userList = usersManager.getAllowedUsersForRole(currentRoleList).ToList(); 
     userList = userList.Skip(itemCount * itemPage).Take(itemCount); 
     AdminUsersListView.DataSource = userList; 
     AdminUsersListView.DataBind(); 
    } 
    catch (Exception exceptionData) 
    { 
     Log.setMessage(exceptionData); 
    } 
} 

问题 - 为什么我总是看到的ItemTemplate,而不是可以看到EditTemplate?

在此先感谢,艺术。

回答

1

答案是直接设置编辑项目的索引/行是这样的:

protected void lvwCustomers_ItemEditing(object sender, ListViewEditEventArgs e) 
{ 
    CloseInsert(); 
    lvwCustomers.EditIndex = e.NewEditIndex; 
    BindList(); 
} 

详细说明可以在这里找到:http://geekswithblogs.net/rashid/Default.aspx

1

你可以尝试使用加载事件绑定数据吗?

+0

你是什么意思?在ListView DataSource中直接进行SQL查询?我只将Load事件的复制代码尝试编辑,它不起作用。 – Anonymous 2010-12-10 09:09:06