如何触发DataGrid中的SelectedIndexChanged事件?急!

时间:2021-04-24 20:55:27
我双击DataGrid控件,编写好了SelectedIndexChanged事件,可我不知道该如何编写相应的程序去触发这个事件,而且DataGrid中没有AutoPostBack属性可设置.请大虾指点! 或是什么地方有这方面的源码下载的?谢谢!

17 个解决方案

#1


DataGrid控件没有这个SelectedIndexChanged事件吧.
再说有的话,也应是服务器上执行的事件,不会实时发生.

#2


GridView倒是有GridView.SelectedIndexChanged 事件
不过它是发生在单击某一行的“选择”按钮,GridView 控件对相应的选择操作进行处理之后。 

#3


DataGrid怎么可能没有SelectedIndexChanged事件呢!!???请打开VS自己试试看,我想只要做过.net的人都知道.请精通.net的大虾帮忙,不甚感激.

#4


怎么我这里的DataGrid没有SelectedIndexChanged这个事件呢?我用的VS2005

#5


无论是Asp.NET还是WinForm都没有这个SelectedIndexChanged事件啊...

#6


VS2003

#7


Private Sub dg_main_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dg_main.SelectedIndexChanged

的确是有,webform下

#8


没听过!

#9


DataList的SelectedIndexChanged到是用的比较多...

MSDN如是说:
DataGrid的SelectedIndexChanged在两次服务器发送之间,在数据列表控件中选择了不同的项时发生。(从 BaseDataList 继承。)

#10


http://www.nidewang.com/dedecmsv3_0_1/html/wangzhanjishu/2006/1111/503.html
看看这个,说实话,真没用到过,他里面的例子用itemcommand也可以实现

#11


可以对DataGrid 每一行进行JS 绑定,点了一行,触发JS,接下来看你自己咯。

#12


你添加一选择按钮列即可

#13


大致是,首先写一个.cs文件:

public delegate void myDataGridDblClickedHandler(int rowIndex);

public class myDataGrid : DataGrid,IPostBackEventHandler 
{

    public event myDataGridDblClickedHandler DblClicked;

    protected override void OnPreRender(EventArgs e)
    {
        if (DblClicked != null)
            foreach (DataGridItem item in this.Items)
                item.Attributes["dblclick"] = this.Page.ClientScript.GetPostBackEventReference(
                    this, "dblclick:" + item.ItemIndex.ToString());
        base.OnPreRender(e);
    }

    public void RaisePostBackEvent(string eventArgument)
    {
        if(eventArgument.StartsWith("dblclick:") && DblClicked !=null)
            DblClicked(int.Parse(eventArgument.Substring(9)));
    }
}

然后不要使用asp.net的DataGrid,使用你自己的。

#14


谢谢,加一选择按钮是可以了,如果想我直接点击DataGrid上面的每一行能触发这个事件,如何做呢?

#15


这个自己的 myDataGrid 控件比asp.net的DataGrid多出来一个 DblClicked 事件,跟你问题中的思路很像。

其实很多时候,你不应该在用的时候才想到去如何凑一个程序,而是多多考虑如何把工具箱中的东西直接变成更顺手的。

#16


用datalist

#17


用myDataGrid 控件显示数据列表,能获取每行的数据ID吗?我采用onclick事件单击某行怎么获取每行的iD

#1


DataGrid控件没有这个SelectedIndexChanged事件吧.
再说有的话,也应是服务器上执行的事件,不会实时发生.

#2


GridView倒是有GridView.SelectedIndexChanged 事件
不过它是发生在单击某一行的“选择”按钮,GridView 控件对相应的选择操作进行处理之后。 

#3


DataGrid怎么可能没有SelectedIndexChanged事件呢!!???请打开VS自己试试看,我想只要做过.net的人都知道.请精通.net的大虾帮忙,不甚感激.

#4


怎么我这里的DataGrid没有SelectedIndexChanged这个事件呢?我用的VS2005

#5


无论是Asp.NET还是WinForm都没有这个SelectedIndexChanged事件啊...

#6


VS2003

#7


Private Sub dg_main_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dg_main.SelectedIndexChanged

的确是有,webform下

#8


没听过!

#9


DataList的SelectedIndexChanged到是用的比较多...

MSDN如是说:
DataGrid的SelectedIndexChanged在两次服务器发送之间,在数据列表控件中选择了不同的项时发生。(从 BaseDataList 继承。)

#10


http://www.nidewang.com/dedecmsv3_0_1/html/wangzhanjishu/2006/1111/503.html
看看这个,说实话,真没用到过,他里面的例子用itemcommand也可以实现

#11


可以对DataGrid 每一行进行JS 绑定,点了一行,触发JS,接下来看你自己咯。

#12


你添加一选择按钮列即可

#13


大致是,首先写一个.cs文件:

public delegate void myDataGridDblClickedHandler(int rowIndex);

public class myDataGrid : DataGrid,IPostBackEventHandler 
{

    public event myDataGridDblClickedHandler DblClicked;

    protected override void OnPreRender(EventArgs e)
    {
        if (DblClicked != null)
            foreach (DataGridItem item in this.Items)
                item.Attributes["dblclick"] = this.Page.ClientScript.GetPostBackEventReference(
                    this, "dblclick:" + item.ItemIndex.ToString());
        base.OnPreRender(e);
    }

    public void RaisePostBackEvent(string eventArgument)
    {
        if(eventArgument.StartsWith("dblclick:") && DblClicked !=null)
            DblClicked(int.Parse(eventArgument.Substring(9)));
    }
}

然后不要使用asp.net的DataGrid,使用你自己的。

#14


谢谢,加一选择按钮是可以了,如果想我直接点击DataGrid上面的每一行能触发这个事件,如何做呢?

#15


这个自己的 myDataGrid 控件比asp.net的DataGrid多出来一个 DblClicked 事件,跟你问题中的思路很像。

其实很多时候,你不应该在用的时候才想到去如何凑一个程序,而是多多考虑如何把工具箱中的东西直接变成更顺手的。

#16


用datalist

#17


用myDataGrid 控件显示数据列表,能获取每行的数据ID吗?我采用onclick事件单击某行怎么获取每行的iD