<asp:Repeater ID="rptNew" runat="server" OnItemDataBound="rptNew_ItemDataBound" OnItemCommand="rptNew_ItemCommand">
<ItemTemplate>
<table style="font-size:14px; line-height:20px;">
<tr>
<td align="left" >
<asp:Literal ID="Literal1" runat="server" Text='From'></asp:Literal>
<asp:Literal ID="Literal2" runat="server" Text='Send' Visible="false"></asp:Literal>
<img src="../logn/user_01.gif" width="20" height="20" align="absmiddle" />:
<asp:Literal ID="lbSend_UserId" runat="server" Text='<%# Eval("Send_UserId")%>'></asp:Literal>
<asp:Literal ID="lbTake_UserId" runat="server" Text='<%# Eval("Take_UserId")%>' Visible="false"></asp:Literal>
</td>
<td>时间: <span style="color:#FF0000"><%# Eval("Send_DateTime")%></span>
<asp:Label ID="lbID" Visible="false" runat="server" Text='<%# Eval("M_Id") %>'></asp:Label>
</td>
</tr>
<tr>
<td align="left" colspan="2"><b>内容:</b><%# Eval("M_Content")%> <br />
<asp:ImageButton ID="Imgbtn_reply" runat="server" ImageUrl="../logn/btn_05.gif" ImageAlign="AbsMiddle" OnClick="Imgbtn_reply_Click1"/>
<asp:ImageButton ID="Imgbtn_delete" runat="server" ImageUrl="../logn/btn_03.gif" ImageAlign="AbsMiddle" OnClick="Imgbtn_delete_Click1"/>
<asp:ImageButton ID="Imgbtn_" runat="server" ImageUrl="../logn/btn_04.gif" ImageAlign="AbsMiddle" OnClick="Imgbtn__Click1"/>
<br />
<hr/> </td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
有这样一个repeater 我想问的是 当我点ImageButton 的时候怎么 在后台判断我点的按钮是哪一行的
例:
protected void Imgbtn_delete_Click1(object sender, ImageClickEventArgs e)
{
在这我该怎么获取用户点的是哪行
}
<ItemTemplate>
<table style="font-size:14px; line-height:20px;">
<tr>
<td align="left" >
<asp:Literal ID="Literal1" runat="server" Text='From'></asp:Literal>
<asp:Literal ID="Literal2" runat="server" Text='Send' Visible="false"></asp:Literal>
<img src="../logn/user_01.gif" width="20" height="20" align="absmiddle" />:
<asp:Literal ID="lbSend_UserId" runat="server" Text='<%# Eval("Send_UserId")%>'></asp:Literal>
<asp:Literal ID="lbTake_UserId" runat="server" Text='<%# Eval("Take_UserId")%>' Visible="false"></asp:Literal>
</td>
<td>时间: <span style="color:#FF0000"><%# Eval("Send_DateTime")%></span>
<asp:Label ID="lbID" Visible="false" runat="server" Text='<%# Eval("M_Id") %>'></asp:Label>
</td>
</tr>
<tr>
<td align="left" colspan="2"><b>内容:</b><%# Eval("M_Content")%> <br />
<asp:ImageButton ID="Imgbtn_reply" runat="server" ImageUrl="../logn/btn_05.gif" ImageAlign="AbsMiddle" OnClick="Imgbtn_reply_Click1"/>
<asp:ImageButton ID="Imgbtn_delete" runat="server" ImageUrl="../logn/btn_03.gif" ImageAlign="AbsMiddle" OnClick="Imgbtn_delete_Click1"/>
<asp:ImageButton ID="Imgbtn_" runat="server" ImageUrl="../logn/btn_04.gif" ImageAlign="AbsMiddle" OnClick="Imgbtn__Click1"/>
<br />
<hr/> </td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
有这样一个repeater 我想问的是 当我点ImageButton 的时候怎么 在后台判断我点的按钮是哪一行的
例:
protected void Imgbtn_delete_Click1(object sender, ImageClickEventArgs e)
{
在这我该怎么获取用户点的是哪行
}
protected void protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e)
{ if (e.Item.ItemType == ListItemType.Item)
{
ImageButton ibtn = e.Row.FindControl("Imgbtn_delete") as ImageButton;
if (ibtn != null)
{
//保存当前ImageButton 所在行的行号
ibtn.CommandArgument = e.Row.RowIndex.ToString(); }
}
}
protected void Imgbtn_delete_Click1(object sender, ImageClickEventArgs e)
{
string indexStr="";
ImageButton ibtn = sender as ImageButton;
if (ibtn != null)
{
indexStr=ibtn.CommandArgument;//获得行号
}
}
在这个事件里,用e表示当前事件的项,不知道说明白没有
你把想要的到的放到ImageButton的CommandArgument属性中,然后再ItemCommand事件中判断,直接用e.CommandArgument就行了。
比如说:
有一个删除按钮,在页面上:
<asp:ImageButton id="..." runat="server" CommandName="Delete" CommandArgument='<%# Eval(数据库中ID字段)%>'>
然后后台:ItemCommand事件中:
if(e.CommandName=="Delete")
{
//e.CommandArgument就是你所点的行的ID ,就可以写这样的语句了:
string SQL="delete from 表 where ID='"+e.CommandArgument+"'";
}
protected void protected void rp_ItemDataBound(object sender, RepeaterItemEventArgs e)
{ if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
ImageButton ibtn = e.Row.FindControl("Imgbtn_delete") as ImageButton;
if (ibtn != null)
{
//保存当前ImageButton 所在行的行号
ibtn.CommandArgument = e.Row.RowIndex.ToString(); }
}
}
protected void Imgbtn_delete_Click1(object sender, ImageClickEventArgs e)
{
int rowIndex;
ImageButton ibtn = sender as ImageButton;
if (ibtn != null)
{
int.TryParse(ibtn.CommandArgument,rowIndex);//获得行号,rowIndex为行号
}
}
ImageAlign="AbsMiddle" OnClick="Imgbtn_delete_Click1"
CommandArgument ='<%# Container.ItemIndex %>'
/>
protected void Imgbtn_delete_Click1(object sender, ImageClickEventArgs e)
{
int rowIndex;
ImageButton ibtn = sender as ImageButton;
if (ibtn != null)
{
int.TryParse(ibtn.CommandArgument,rowIndex);//获得行号,rowIndex为行号
}
}
protected void Imgbtn_delete_Click1(object sender, ImageClickEventArgs e)
{
int rowIndex;
ImageButton ibtn = sender as ImageButton;
if (ibtn != null)
{
int.TryParse(ibtn.CommandArgument,out rowIndex);//获得行号,rowIndex为行号
}
}
ImageAlign="AbsMiddle" OnClick="Imgbtn_delete_Click1"
CommandArgument ='<%# Container.ItemIndex %>'
/> 这个行了
protected void Imgbtn_delete_Click1(object sender, ImageClickEventArgs e)
{
int rowIndex;
ImageButton ibtn = sender as ImageButton;
if (ibtn != null)
{
int.TryParse(ibtn.CommandArgument,rowIndex);//获得行号,rowIndex为行号
这我想获取这行的其他控件值 怎么弄 刚学会用repeater 不熟 谢谢大家
}
}
protected void Imgbtn_delete_Click1(object sender, ImageClickEventArgs e)
{
int itemIndex=0;
ImageButton ibtn = sender as ImageButton;
if (ibtn != null)
{
int.TryParse(ibtn.CommandArgument,out itemIndex);//获得行号,itemIndex为行号
}
Literal lit=rptNew.Items[itemIndex].FindControl("lbSend_UserId") as Literal;
if(lit!=null)
Response.Write("<br>" +lit.Text );
}