我有一个列表视图,其中包含一个列,我需要放置两个链接按钮 - 打开和下载分别打开和下载服务器文件。我为列表视图的每一行都有一个id列。我已将listview的DataKeyNames属性设置为“ID”,并验证DataKeys是否填充了行值。在单击特定链接按钮时,我需要所选ID以确定与该行对应的服务器文件的链接。我添加了linkButton_click事件,但是当我尝试访问处理程序内的SelectedDataKey时,它仍然为null。如何在链接按钮的单击处理程序中获取ID?
答案 0 :(得分:1)
您需要使用ListView.ItemCommand
并获取DataKeys
,如下所示
protected void EmployeesListView_OnItemCommand(object sender, ListViewCommandEventArgs e)
{
if (String.Equals(e.CommandName, "AddToList"))
{
// Verify that the employee ID is not already in the list. If not, add the
// employee to the list.
ListViewDataItem dataItem = (ListViewDataItem)e.Item;
string employeeID =
EmployeesListView.DataKeys[dataItem.DisplayIndex].Value.ToString();
if (SelectedEmployeesListBox.Items.FindByValue(employeeID) == null)
{
ListItem item = new ListItem(e.CommandArgument.ToString(), employeeID);
SelectedEmployeesListBox.Items.Add(item);
}
}
}
以上直接从MSDN获取的示例,您最好检查如何更改aspx标记和后面的代码,如上面提供的文档链接中给出的示例。
答案 1 :(得分:1)
你可以用这个:
protected void ConferencesListView_ItemCommand(object sender, ListViewCommandEventArgs e)
{
int _Id;
int.TryParse(e.CommandArgument.ToString(), out _Id);
if (e.CommandName == "View")
{
}
}
和设计师:
<asp:LinkButton ID="ViewLinkButton" runat="server" CommandName="View" CommandArgument='<%# Eval("ID") %>' />