在单击的下单击选择行

时间:2012-06-22 13:40:22

标签: c# asp.net repeater

有人能告诉我如何选择我点击按钮的行吗?

<asp:Button ID="btnmoveup" runat="server" Text="/\" OnCommand="MoveButton_Clicked"
                                    CommandName="UP" CommandArgument='<%# Eval("ProjectID") + ";"+Eval("Priority")%>'/>
                            </td>
                            <td>
                                <asp:Button ID="btnmovedown" runat="server" Text="\/" OnCommand="MoveButton_Clicked"
                                    CommandName="DOWN" CommandArgument='<%# Eval("ProjectID") + ";"+Eval("Priority")%>' />

背后的代码:

protected void MoveButton_Clicked(object sender, CommandEventArgs e)
{
string[] arguments = e.CommandArgument.ToString().Split(new char[] {';'});
string pid1;
int prior;
pid1 = arguments[0];
prior = int.Parse(arguments[1]);

这给了我单击按钮的行的优先级和ProjectID。

如何在此下方获得行的优先级和项目? 行在转发器控制中。

1 个答案:

答案 0 :(得分:0)

将您的CommandArgument更改为<%# Container.ItemIndex %>

然后在Clicked事件中,您可以执行以下操作:

int clickedIndex = int.Parse(e.CommandArgument);
int selectIndex = clickedIndex + 1; // or -1 depending on the button clicked.
var dataItem = (YourDataType)(yourRepeater.Items[selectIndex].DataItem);
var priority = dataItem.Priority;
var projectID = dataItem.ProjectID;

或者,您可以将优先级和项目ID绑定到转发器中的隐藏字段,并使用yourRepeater.Items[selectIndex].FindControl('yourHiddenFieldId').Text或类似的。