想用datalist实现双击行的任意位置执行事件

jpyc 2012-01-28 04:31:50
想用datalist,绑定数据后,双击行的任意位置,执行后台的代码,
如页面显示数据:
ID 产品名 说明
1 产品A A说明
2 产品B B说明
3 产品C C说明
4 产品D D说明

如果双击 1行的任意位置,马上把ID作为参数执行对应的后台代码.

最好给个相关的例子,谢谢大家。

不清楚的再补充。
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jpyc 2012-01-28
  • 打赏
  • 举报
回复
tr 里怎么加入 ondblclick 比较合理。因为DataList中,因为他本是生成的时候有一套table tr tb

我仔细看看啊。谢谢
wosizy 2012-01-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 jpyc 的回复:]
想用datalist,绑定数据后,双击行的任意位置,执行后台的代码,
如页面显示数据:
ID 产品名 说明
1 产品A A说明
2 产品B B说明
3 产品C C说明
4 产品D D说明

如果双击 1行的任意位置,马上把ID作为参数执行对应的后台代码.

最好给个相关的例子,谢谢大家。

不清楚的再补充。
[/Quote]
首先要给DataList的行中添加双击事件
这个不需要再 给示例了吧! 客户端控件的 ondblclick事件
wosizy 2012-01-28
  • 打赏
  • 举报
回复
点击dataList的时候获取其索引字段的的值

示例:

<asp:DataList ID="DataList1" runat="server" width="400px"
OnItemCommand="DataList1_ItemCommand" OnItemDataBound="DataList1_ItemDataBound">
<HeaderTemplate>
任务列表
</HeaderTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Text="SingleClick" CommandName="SingleClick" Visible="false"/>
<asp:LinkButton ID="LinkButton2" runat="server" Text="DoubleClick" CommandName="DoubleClick" Visible="false"/>
<asp:Panel ID="Panel1" runat="server">
<span style="float:left;">
<b>编号: </b><%# Eval("Id") %>
  <b>任务: </b><%# Eval("Task") %>
</span>
<span style="float:right;">
<b>是否完成: </b><%# Eval("IsDone") %>
</span>
</asp:Panel>
</ItemTemplate>
<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
<ItemStyle BackColor="#F7F7DE" BorderStyle="Solid" BorderColor="lightgray" BorderWidth="1px" />
<AlternatingItemStyle BackColor="white" />
<SelectedItemStyle BackColor="#CE5D5A" />
</asp:DataList>


#region DataList1

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// Get the first LinkButton control
LinkButton _singleClickButton = (LinkButton)e.Item.Controls[1];
// Get the javascript which is assigned to this LinkButton
string _jsSingle = ClientScript.GetPostBackClientHyperlink(_singleClickButton, "");
// To prevent the first click from posting back immediately
// (therefore giving the user a chance to double click) pause the
// postback for 300 milliseconds by using setTimeout
_jsSingle = _jsSingle.Insert(11, "setTimeout(\"");
_jsSingle += "\", 300)";
// Get the panel wrapping the item
Panel itemPanelSingle = (Panel)e.Item.Controls[5];
// Add this javascript to the onclick Attribute of the panel
itemPanelSingle.Attributes["onclick"] = _jsSingle;

// Get the second LinkButton control
LinkButton _doubleClickButton = (LinkButton)e.Item.Controls[3];
// Get the javascript which is assigned to this LinkButton
string _jsDouble = ClientScript.GetPostBackClientHyperlink(_doubleClickButton, "");
// Get the panel wrapping the item
Panel _itemPanelDouble = (Panel)e.Item.Controls[5];
// Add this javascript to the ondblclick Attribute of the panel
_itemPanelDouble.Attributes["ondblclick"] = _jsDouble;
}
}

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
DataList _dataList = (DataList)source;

// Get the selected index and the command name
int _selectedIndex = e.Item.ItemIndex;
string _commandName = e.CommandName;

switch (_commandName)
{
case ("SingleClick"):
_dataList.SelectedIndex = _selectedIndex;
this.Message.Text += "Single clicked DataList row at index " + _selectedIndex.ToString() + "<br />";
break;
case ("DoubleClick"):
this.Message.Text += "Double clicked DataList row at index " + _selectedIndex.ToString() + "<br />";
break;
}
}

62,065

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧