c# - 如何在运行时传递 ListView 的行索引?

标签 c# .net asp.net .net-3.5

我有一个问题,在我的页面上有一个 ListView 控件,我还有一个带有 CommandArgument 的按钮。我知道我可以在 ListView 中读取并找到一个控件:

ListView.Items[i].FindControl("controlname");

我在ListView中的按钮就是这样的

 asp:Button ID="WisdomButton" runat="server" CommandName="UpdateWisdom"  CommandArgument='<%# need my index for Item[i] to post here %>' 
                                  OnCommand="UpdateWisdom" Text="Update"   />

我想在运行时将索引值添加到 CommantParameter,因此当我转到 Function onCommand 时,我将确切地知道我需要从 ListView 中获取控件的 row[i]。

所以我的问题是,如何在运行时将 ListView.Rows[i] 的索引动态添加到按钮的 CommmandArgument 中?

提前致谢。

最佳答案

查看 API

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listviewcommandeventargs.aspx

ListViewCommandEventArgs 项有一个索引,IE 它已经在参数中可用

ListViewDataItem dataItem = (ListViewDataItem)e.Item;
int i = dataItem.DisplayIndex;

但是从这里您将可以访问这些控件

e.Item.FindConrol("controlName");

如果您以不同的方式调用该方法,您可以通过 ItemDataBound 事件分配索引

void MyListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    ((Button)e.Item.FindControl("WisdomButton")).CommandArgument = ((ListViewDataItem)e.Item).DisplayIndex;
}

或者尝试这样的方式来咯咯笑

<asp:Button runat="server" CommandArgument='<%# DisplayIndex %>'/>
// OR
<asp:Button runat="server" CommandArgument='<%# NextIndex() %>'/>

关于c# - 如何在运行时传递 ListView 的行索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/692120/

相关文章:

c# - Asp Action 路线数据

c# - 索引超出范围。必须为非负数且小于集合的大小。参数名称 : index

c# - 从collectionview获取过滤列表

c# - 使用应用程序生命周期为每个构造函数参数值创建一个类的实例

c# - 单元测试帮助。如何测试消息输出到控制台?

html - 我想在我的母版页中放置一个超大屏幕作为标题

javascript - 如何在 ajax 调用 C# webmethod 时指定抛出异常的消息?

.net - WPF不同的窗口图标和任务栏图标

c# - 存储客户端库 2.0 - 为什么 API 使用起来不如 1.7 那么直观?

c# - 将 blob (.bacpac) 转换为 .bacpac 文件以将数据库导入到 SQL Server Azure?