关于在DataGrid中双击所选中的行响应事件,请各位大侠帮忙 微软本身的datagrid是不行了,找些别人做好的增强版的datagrid有支持双击事件的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 标准的datagrid没有这个功能,只能实现单击事件。 foreach(DataGridItem item in grd1.Items ) {item.Attributes.Add("ondblclick","这边换成你想做的代码。你可以弟交到服务器,再做处理");} foreach(DataGridItem item in grd1.Items ) {item.Attributes.Add("ondblclick","这边换成你想做的代码。你可以弟交到服务器,再做处理");} 接上:protected void OnScroll2Foot() { if(null!=Scroll2Foot) Scroll2Foot(this,new EventArgs()); } protected void OnScroll2Top() { if(null!=Scroll2Top) Scroll2Top(this,new EventArgs()); } // private bool LoadPostData // (string postDataKey,NameValueCollection postData) // { // string PostedValue=postData[postDataKey]; // if(null==PostedValue) // { // return true; // } // return false; // } /// <summary> /// 通过eventArgument触发相应事件。 /// </summary> /// <param name="eventArgument"> /// SCROLL2TOP:向上滚动事件, /// SCROLL2FOOT:向下滚动事件, /// CLK前缀:单击事件(此时后缀为触发的行号,从0开始), /// DBL前缀:双击事件(此时后缀为触发的行号,从0开始)。 /// </param> public void RaisePostBackEvent(string eventArgument) { if("SCROLLMODE"==DisplayMode.ToUpper()) { if("SCROLL2TOP"==eventArgument.ToUpper()) { OnScroll2Top(); return; } if("SCROLL2FOOT"==eventArgument.ToUpper()) { OnScroll2Foot(); return; } } if(eventArgument.StartsWith("CLK")) { eventArgument= eventArgument.TrimStart(new Char[]{'C','L','K'}); OnClick(Convert.ToInt32(eventArgument)); return; } if(eventArgument.StartsWith("DBL")) { eventArgument= eventArgument.TrimStart(new Char[]{'D','B','L'}); OnDblClick(Convert.ToInt32(eventArgument)); return; } } protected override void OnItemDataBound(DataGridItemEventArgs e) { base.OnItemDataBound(e); if((ListItemType.Pager==e.Item.ItemType)|| (ListItemType.Footer==e.Item.ItemType)) { return; } if(ListItemType.Header!=e.Item.ItemType) { e.Item.Attributes["id"]= e.Item.ItemType.ToString()+e.Item.ItemIndex.ToString(); e.Item.Attributes["OnMouseOut"]= "javascript:bgColor='"+BackColor.Name.ToString()+"';"; e.Item.Attributes["OnMouseOver"]= "javascript:bgColor='"+CurrentRowColor.Name.ToString()+"';"; //添加客户端双击行事件 e.Item.Attributes["OnDblClick"]= "javascript:"+UniqueID+"_dbl("+e.Item.ItemIndex.ToString()+");"; //添加客户端单击行事件 e.Item.Attributes["OnClick"]= "javascript:"+UniqueID+"_clk("+e.Item.ItemIndex.ToString()+");"; } else { int cellCount=e.Item.Cells.Count; for(int index=0;index<cellCount;index++) { e.Item.Cells[index].Attributes["id"]= "HEADER"+index.ToString(); } } }*******************************************************************************************************/// <summary> /// 单击双击脚本。 /// </summary> /// <param name="canClick"> /// 是否允许提交DataGrid单击行事件。 /// </param> /// <param name="canDblClick"> /// 是否允许提交DataGrid双击行事件。 /// </param> /// <returns> /// 处理设置DataGrid单击双击行事件的javascript脚本。 /// </returns> private string clickScript(bool canClick,bool canDblClick) { StringBuilder sbScript=new StringBuilder(); sbScript.Append("<script language='javascript'>")//; //单击标志 .Append( "var "+UniqueID+"_click=0;") //双击标志 .Append( "var "+UniqueID+"_dblclick=0;") //被单击或双击的行标志 .Append( "var "+UniqueID+"_row;") //单击事件 .Append( "function "+UniqueID+"_clk(row)") .Append("{") .Append( "if((\"TD\"==event.srcElement.tagName)||(\"TR\"==event.srcElement.tagName))") .Append("{") .Append(UniqueID+"_click++;") .Append(UniqueID+"_row=row;") .Append( "setTimeout('"+UniqueID+"_submit()',300)") .Append("}") .Append("}") //双击事件 .Append( "function "+UniqueID+"_dbl(row)") .Append("{") .Append( "if((\"TD\"==event.srcElement.tagName)||(\"TR\"==event.srcElement.tagName))") .Append("{") .Append(UniqueID+"_dblclick++;") .Append(UniqueID+"_row=row;") .Append("}") .Append("}") //提交单双击事件 .Append( "function "+UniqueID+"_submit()") .Append("{") .Append( "if((1=="+UniqueID+"_click)&&(1=="+UniqueID+"_dblclick))") .Append("{"); if(true==canDblClick) { sbScript.Append( "__doPostBack('"+UniqueID+"','DBL'+"+UniqueID+"_row);"); } sbScript.Append("}") .Append("else {"); if(true==canClick) { sbScript.Append( "__doPostBack('"+UniqueID+"','CLK'+"+UniqueID+"_row);"); } sbScript.Append("}") //单击标志复位 .Append( UniqueID+"_click=0;") //双击标志复位 .Append( UniqueID+"_dblclick=0;") .Append("}") .Append("</script>"); return sbScript.ToString(); } 接上: /// <summary> /// 滚动表脚本。 /// </summary> /// <param name="canScroll"> /// 是否允许DataGrid显示滚动条。 /// </param> /// <returns> /// 描述滚动表的javascript脚本。 /// </returns> private string scrollTableScript(bool canScroll) { StringBuilder sbScript=new StringBuilder(); sbScript.Append("<script language='javascript'>"); if(true==canScroll) { //保存datagrid高度 sbScript.Append( "var "+UniqueID+"_dgHeight=" +UniqueID+"_sp.scrollHeight;") //滚动表上沿高度 .Append( UniqueID+"_rTop.style.height=" +CurrentPageIndex+"*"+UniqueID+"_dgHeight;"); //滚动表下沿高度 if(0==PageCount) { sbScript.Append( UniqueID+"_rFoot.style.height=0;"); } else { sbScript.Append( UniqueID+"_rFoot.style.height=" +"("+PageCount+"-"+CurrentPageIndex+"-1)*"+UniqueID+"_dgHeight;"); } //容器高度 sbScript.Append( UniqueID+"_sp.style.height=" +UniqueID+"_dgHeight+20;"); //滚动条位置 if(PageCount==CurrentPageIndex+1) { sbScript.Append( UniqueID+"_sp.scrollTop=" +"100+"+UniqueID+"_dgHeight*"+CurrentPageIndex+";"); } else { sbScript.Append( UniqueID+"_sp.scrollTop=" +UniqueID+"_dgHeight*"+CurrentPageIndex+";"); } //保存滚动条位置 sbScript.Append( "var "+UniqueID+"_scrollPos="+UniqueID+"_sp.scrollTop;") //滚动事件标志为未触发 .Append("var "+UniqueID+"_scrolled=0;"); } else { //未分页,不显示垂直滚动条 sbScript.Append( UniqueID+"_sp.style.height=" +UniqueID+"_sp.scrollHeight+20;"); } sbScript.Append("</script>"); return sbScript.ToString(); } /// <summary> /// 滚动事件脚本。 /// </summary> /// <param name="canScroll"> /// 是否允许DataGrid显示滚动条。 /// </param> /// <returns> /// 滚动事件的javascript脚本。 /// </returns> private string scrollEventScript(bool canScroll) { StringBuilder sbScript=new StringBuilder(); //处理滚动事件 sbScript.Append("<script language='javascript'>") .Append("function "+UniqueID+"_scroll()") .Append("{"); if(true==canScroll) { to napsoft:能不能发这代码到非常感谢。 to chnking:请问在那里有增强版的datagrid下载,非常感谢。 http://www.codeproject.com/aspnet/masterdetailgrid/masterdetailgrid_src.ziphttp://xml.sz.luohuedu.net/xml/Content.asp http://aspalliance.com/Colt/Articles/Article3.aspx public void RaisePostBackEvent(string eventArgument) { if("SCROLLMODE"==DisplayMode.ToUpper()) { if("SCROLL2TOP"==eventArgument.ToUpper()) { OnScroll2Top(); return; } if("SCROLL2FOOT"==eventArgument.ToUpper()) { OnScroll2Foot(); return; } } if(eventArgument.StartsWith("CLK")) { eventArgument= eventArgument.TrimStart(new Char[]{'C','L','K'}); OnClick(Convert.ToInt32(eventArgument)); return; } if(eventArgument.StartsWith("DBL")) { eventArgument= eventArgument.TrimStart(new Char[]{'D','B','L'}); OnDblClick(Convert.ToInt32(eventArgument)); return; } } protected override void OnItemDataBound(DataGridItemEventArgs e) { base.OnItemDataBound(e); if((ListItemType.Pager==e.Item.ItemType)|| (ListItemType.Footer==e.Item.ItemType)) { return; } if(ListItemType.Header!=e.Item.ItemType) { e.Item.Attributes["id"]= e.Item.ItemType.ToString()+e.Item.ItemIndex.ToString(); e.Item.Attributes["OnMouseOut"]= "javascript:bgColor='"+BackColor.Name.ToString()+"';"; e.Item.Attributes["OnMouseOver"]= "javascript:bgColor='"+CurrentRowColor.Name.ToString()+"';"; //添加客户端双击行事件 e.Item.Attributes["OnDblClick"]= "javascript:"+UniqueID+"_dbl("+e.Item.ItemIndex.ToString()+");"; //添加客户端单击行事件 e.Item.Attributes["OnClick"]= "javascript:"+UniqueID+"_clk("+e.Item.ItemIndex.ToString()+");"; } else { int cellCount=e.Item.Cells.Count; for(int index=0;index<cellCount;index++) { e.Item.Cells[index].Attributes["id"]= "HEADER"+index.ToString(); } } } 其实不难 ^_^Private Sub DataGrid1_ItemCreated(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles Datagrid1.ItemCreated Dim selectindex As Integer selectindex = e.Item.ItemIndex e.Item.Attributes("OndblClick") = "dgDblClick(" & selectindex & ")" '--or yours params e.Item.Attributes("style") = "cursor:hand" e.Item.Attributes("OnClick") = "dgClick(" & selectindex & ")" End Sub 有关Grid多表头的问题!ASp.net IIS如何设置层(看看再说) 权限设置BUTTON的问题 关于GridView的导出问题 IIS5 需要安装什么才能运行aspx? 同一ID下插入不同的值 求助[孟子E章],有个关于你的书<ASP.NET2.0应用开发技术>源代码的一点小问题 菜鸟提问? jquery的这段代码什么意思啊 C#查询mysql时候显示system.data.datarowView 如何在IE上用代码实现刷新的过程呢,急。。。。。。。。。。。。。 请教高手,关于双击问题?
{
item.Attributes.Add("ondblclick","这边换成你想做的代码。你可以弟交到服务器,再做处理");
}
{
item.Attributes.Add("ondblclick","这边换成你想做的代码。你可以弟交到服务器,再做处理");
}
protected void OnScroll2Foot()
{
if(null!=Scroll2Foot)
Scroll2Foot(this,new EventArgs());
}
protected void OnScroll2Top()
{
if(null!=Scroll2Top)
Scroll2Top(this,new EventArgs());
}
// private bool LoadPostData
// (string postDataKey,NameValueCollection postData)
// {
// string PostedValue=postData[postDataKey];
// if(null==PostedValue)
// {
// return true;
// }
// return false;
// }
/// <summary>
/// 通过eventArgument触发相应事件。
/// </summary>
/// <param name="eventArgument">
/// SCROLL2TOP:向上滚动事件,
/// SCROLL2FOOT:向下滚动事件,
/// CLK前缀:单击事件(此时后缀为触发的行号,从0开始),
/// DBL前缀:双击事件(此时后缀为触发的行号,从0开始)。
/// </param>
public void RaisePostBackEvent(string eventArgument)
{
if("SCROLLMODE"==DisplayMode.ToUpper())
{
if("SCROLL2TOP"==eventArgument.ToUpper())
{
OnScroll2Top();
return;
}
if("SCROLL2FOOT"==eventArgument.ToUpper())
{
OnScroll2Foot();
return;
}
}
if(eventArgument.StartsWith("CLK"))
{
eventArgument=
eventArgument.TrimStart(new Char[]{'C','L','K'});
OnClick(Convert.ToInt32(eventArgument));
return;
}
if(eventArgument.StartsWith("DBL"))
{
eventArgument=
eventArgument.TrimStart(new Char[]{'D','B','L'});
OnDblClick(Convert.ToInt32(eventArgument));
return;
}
}
protected override void OnItemDataBound(DataGridItemEventArgs e)
{
base.OnItemDataBound(e);
if((ListItemType.Pager==e.Item.ItemType)||
(ListItemType.Footer==e.Item.ItemType))
{
return;
}
if(ListItemType.Header!=e.Item.ItemType)
{
e.Item.Attributes["id"]=
e.Item.ItemType.ToString()+e.Item.ItemIndex.ToString();
e.Item.Attributes["OnMouseOut"]=
"javascript:bgColor='"+BackColor.Name.ToString()+"';";
e.Item.Attributes["OnMouseOver"]=
"javascript:bgColor='"+CurrentRowColor.Name.ToString()+"';";
//添加客户端双击行事件
e.Item.Attributes["OnDblClick"]=
"javascript:"+UniqueID+"_dbl("+e.Item.ItemIndex.ToString()+");";
//添加客户端单击行事件
e.Item.Attributes["OnClick"]=
"javascript:"+UniqueID+"_clk("+e.Item.ItemIndex.ToString()+");";
}
else
{
int cellCount=e.Item.Cells.Count;
for(int index=0;index<cellCount;index++)
{
e.Item.Cells[index].Attributes["id"]=
"HEADER"+index.ToString();
}
}
}*******************************************************************************************************
/// <summary>
/// 单击双击脚本。
/// </summary>
/// <param name="canClick">
/// 是否允许提交DataGrid单击行事件。
/// </param>
/// <param name="canDblClick">
/// 是否允许提交DataGrid双击行事件。
/// </param>
/// <returns>
/// 处理设置DataGrid单击双击行事件的javascript脚本。
/// </returns>
private string clickScript(bool canClick,bool canDblClick)
{
StringBuilder sbScript=new StringBuilder();
sbScript.Append("<script language='javascript'>")//;
//单击标志
.Append(
"var "+UniqueID+"_click=0;")
//双击标志
.Append(
"var "+UniqueID+"_dblclick=0;")
//被单击或双击的行标志
.Append(
"var "+UniqueID+"_row;")
//单击事件
.Append(
"function "+UniqueID+"_clk(row)")
.Append("{")
.Append(
"if((\"TD\"==event.srcElement.tagName)||(\"TR\"==event.srcElement.tagName))")
.Append("{")
.Append(UniqueID+"_click++;")
.Append(UniqueID+"_row=row;")
.Append(
"setTimeout('"+UniqueID+"_submit()',300)")
.Append("}")
.Append("}")
//双击事件
.Append(
"function "+UniqueID+"_dbl(row)")
.Append("{")
.Append(
"if((\"TD\"==event.srcElement.tagName)||(\"TR\"==event.srcElement.tagName))")
.Append("{")
.Append(UniqueID+"_dblclick++;")
.Append(UniqueID+"_row=row;")
.Append("}")
.Append("}")
//提交单双击事件
.Append(
"function "+UniqueID+"_submit()")
.Append("{")
.Append(
"if((1=="+UniqueID+"_click)&&(1=="+UniqueID+"_dblclick))")
.Append("{");
if(true==canDblClick)
{
sbScript.Append(
"__doPostBack('"+UniqueID+"','DBL'+"+UniqueID+"_row);");
}
sbScript.Append("}")
.Append("else {");
if(true==canClick)
{
sbScript.Append(
"__doPostBack('"+UniqueID+"','CLK'+"+UniqueID+"_row);");
}
sbScript.Append("}")
//单击标志复位
.Append(
UniqueID+"_click=0;")
//双击标志复位
.Append(
UniqueID+"_dblclick=0;")
.Append("}")
.Append("</script>");
return sbScript.ToString();
}
/// <summary>
/// 滚动表脚本。
/// </summary>
/// <param name="canScroll">
/// 是否允许DataGrid显示滚动条。
/// </param>
/// <returns>
/// 描述滚动表的javascript脚本。
/// </returns>
private string scrollTableScript(bool canScroll)
{
StringBuilder sbScript=new StringBuilder();
sbScript.Append("<script language='javascript'>");
if(true==canScroll)
{
//保存datagrid高度
sbScript.Append(
"var "+UniqueID+"_dgHeight="
+UniqueID+"_sp.scrollHeight;")
//滚动表上沿高度
.Append(
UniqueID+"_rTop.style.height="
+CurrentPageIndex+"*"+UniqueID+"_dgHeight;");
//滚动表下沿高度
if(0==PageCount)
{
sbScript.Append(
UniqueID+"_rFoot.style.height=0;");
}
else
{
sbScript.Append(
UniqueID+"_rFoot.style.height="
+"("+PageCount+"-"+CurrentPageIndex+"-1)*"+UniqueID+"_dgHeight;");
}
//容器高度
sbScript.Append(
UniqueID+"_sp.style.height="
+UniqueID+"_dgHeight+20;");
//滚动条位置
if(PageCount==CurrentPageIndex+1)
{
sbScript.Append(
UniqueID+"_sp.scrollTop="
+"100+"+UniqueID+"_dgHeight*"+CurrentPageIndex+";");
}
else
{
sbScript.Append(
UniqueID+"_sp.scrollTop="
+UniqueID+"_dgHeight*"+CurrentPageIndex+";");
}
//保存滚动条位置
sbScript.Append(
"var "+UniqueID+"_scrollPos="+UniqueID+"_sp.scrollTop;")
//滚动事件标志为未触发
.Append("var "+UniqueID+"_scrolled=0;");
}
else
{
//未分页,不显示垂直滚动条
sbScript.Append(
UniqueID+"_sp.style.height="
+UniqueID+"_sp.scrollHeight+20;");
}
sbScript.Append("</script>");
return sbScript.ToString();
}
/// <summary>
/// 滚动事件脚本。
/// </summary>
/// <param name="canScroll">
/// 是否允许DataGrid显示滚动条。
/// </param>
/// <returns>
/// 滚动事件的javascript脚本。
/// </returns>
private string scrollEventScript(bool canScroll)
{
StringBuilder sbScript=new StringBuilder();
//处理滚动事件
sbScript.Append("<script language='javascript'>")
.Append("function "+UniqueID+"_scroll()")
.Append("{");
if(true==canScroll)
{
能不能发这代码到
非常感谢。
请问在那里有增强版的datagrid下载,
非常感谢。
http://xml.sz.luohuedu.net/xml/Content.asp
http://aspalliance.com/Colt/Articles/Article3.aspx
{
if("SCROLLMODE"==DisplayMode.ToUpper())
{
if("SCROLL2TOP"==eventArgument.ToUpper())
{
OnScroll2Top();
return;
}
if("SCROLL2FOOT"==eventArgument.ToUpper())
{
OnScroll2Foot();
return;
}
}
if(eventArgument.StartsWith("CLK"))
{
eventArgument=
eventArgument.TrimStart(new Char[]{'C','L','K'});
OnClick(Convert.ToInt32(eventArgument));
return;
}
if(eventArgument.StartsWith("DBL"))
{
eventArgument=
eventArgument.TrimStart(new Char[]{'D','B','L'});
OnDblClick(Convert.ToInt32(eventArgument));
return;
}
}
protected override void OnItemDataBound(DataGridItemEventArgs e)
{
base.OnItemDataBound(e);
if((ListItemType.Pager==e.Item.ItemType)||
(ListItemType.Footer==e.Item.ItemType))
{
return;
}
if(ListItemType.Header!=e.Item.ItemType)
{
e.Item.Attributes["id"]=
e.Item.ItemType.ToString()+e.Item.ItemIndex.ToString();
e.Item.Attributes["OnMouseOut"]=
"javascript:bgColor='"+BackColor.Name.ToString()+"';";
e.Item.Attributes["OnMouseOver"]=
"javascript:bgColor='"+CurrentRowColor.Name.ToString()+"';";
//添加客户端双击行事件
e.Item.Attributes["OnDblClick"]=
"javascript:"+UniqueID+"_dbl("+e.Item.ItemIndex.ToString()+");";
//添加客户端单击行事件
e.Item.Attributes["OnClick"]=
"javascript:"+UniqueID+"_clk("+e.Item.ItemIndex.ToString()+");";
}
else
{
int cellCount=e.Item.Cells.Count;
for(int index=0;index<cellCount;index++)
{
e.Item.Cells[index].Attributes["id"]=
"HEADER"+index.ToString();
}
}
}
Private Sub DataGrid1_ItemCreated(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles Datagrid1.ItemCreated
Dim selectindex As Integer
selectindex = e.Item.ItemIndex
e.Item.Attributes("OndblClick") = "dgDblClick(" & selectindex & ")" '--or yours params
e.Item.Attributes("style") = "cursor:hand"
e.Item.Attributes("OnClick") = "dgClick(" & selectindex & ")"
End Sub