GridView Selectedindex更改事件未被触发 [英] GridView Selectedindex Changed Event not getting Fired

查看:56
本文介绍了GridView Selectedindex更改事件未被触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Daer All;



设计代码:



 < span class =code-keyword><   asp:GridView     ID   =  grdView    runat   =  server     DataKeyNames   = < span class =code-keyword> ID    AutoGenerateColumns   =  false  

OnSelectedIndexChanged = grdView_SelectedIndexChanged > ;
< >
< asp:BoundField DataField = ID 可见 = false HeaderText = ID > < / asp:BoundField >
< asp:BoundField DataField = NAME 可见 = true HeaderText < span class =code-keyword> = NAME > < / asp:BoundField >
< /列 >
< / asp:GridView >





C#代码背后:



 受保护  void  grdView_SelectedIndexChanged( object  sender,EventArgs e)
{
try
{
string index = grdView.DataKeyNames.ToString();
}
catch (例外情况)
{
Response.Write(ex.Message);
}
}







一旦我点击gridview事件Selectedindex改变了没有被解雇..请指导我摆脱它..



如果你能给我一个例子来检索特定行的数据我正在选择网格Pls ..提前感谢: - )

解决方案

默认点击一行,你需要在gridview中有一个按钮触发select命令不会解雇这个事件。查看此链接 http://stackoverflow.com/questions/8358641/why- doesnt-my-gridview-selectedindexchanged-event-fire [ ^ ]



问候

Pawan


< blockquote>下面的Codings是从ASP Datagrid中检索数据。那些开始使用ASP.net这段代码的人会非常有用的知道。如果你遇到这个代码的问题,请回复我。让我试着帮助你:-)请不要犹豫,通过所有的代码。希望这些代码在相应位置的复制粘贴将通过更改您自己的连接字符串来工作。谢谢:-)



ASPX代码:



 <  !DOCTYPE     html     PUBLIC     -  // W3C // DTD     XHTML     1.0     Transitional // EN   http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd >  
< html xmlns = http://www.w3.org/1999/xhtml >
< head runat = 服务器 >
< title > Untitled Page < / title >

< script 语言 = javascript type = text / javascript >
函数DO(ID){
document.getElementById( hdnID)。value = ID;
document.getElementById(form1)。submit();
}
< / script >

< / head >
< body >
< 表格 < span class =code-attribute> id = form1 runat = server >
< div >
< 宽度 = 100% >
< tr > ;
< td colspan = 2 align = center >
< asp:DataGrid ID = grdview runat = 服务器 AutoGenerateColumns = false OnItemDataBound = ItemBound >
< >
< span class =code-keyword>< asp:BoundColumn 数据字段 = ID HeaderText = ID 可见 = false > < / asp :BoundColumn >
< asp:BoundColumn DataField = 名称 HeaderText < span class =code-keyword> =
NAME < span class =code-keyword>> < / asp:BoundColumn < span class =code-keyword>>
< / Columns >
< / asp: DataGrid >
< / td >
< / tr >
< tr >
< TD <跨度class =code-attribute> colspan = 2 align = center >
< asp:TextBox ID = txtName runat = server > < / asp:TextBox >
< 输入 type = 隐藏 id = hdnID < span class =code-attribute> runat = server / >
< / td >
< / tr >
< span class =code-keyword>< / table >
< / div >
< / form >
< / body >
< / html >







C#代码:



公共部分类Ganesh:System.Web.UI.Page

{

SqlConnection con;

protected void Page_Load(object sender,EventArgs e)

{

try

{

con = new SqlConnection(@data source = GANESH-VAIO; initial catalog = GANESH; user id = sa; password = cool);

if(!IsPostBack)

{

FillGrid();

}

else

{

if(!string.IsNullOrEmpty(hdnID.Value))

{

GetValue();

ViewState [ID] = hdnID.Value;

hdnID.Value =;

}

}

}

catch(例外情况)

{

Response.Redirect(ex.Message);

}

}



public void GetValue()

{

DataSet ds;

try

{

ds = new DataSet();

con.Open();

S. qlDataAdapter dr = new SqlDataAdapter(select id,study from name =''+ hdnID.Value.Trim()+'',con);

dr.Fill(ds) ;

if(ds!= null&& ds.Tables.Count> 0&& ds.Tables [0] .Rows.Count> 0)

{

txtName.Text = ds.Tables [0] .Rows [0] [NAME]。ToString();

}

}

catch(exception ex)

{

throw ex;

}

}



protected void ItemBound(object sender,DataGridItemEventArgs e)

{

TableRow dr;

try

{

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

{

dr = (TableRow)e.Item.Cells [0] .Parent;

dr.Attributes.Add(OnClick,DO(''+ e.Item.Cells [0] .Text + ''););

}

}

catch(例外情况ex)

{

Response.Redirect(ex.Message);

}

}



protected void FillGrid()

{

DataSet ds;

try

{

ds = new DataSet();

con.Open();

// SqlDataAdapter dr = new SqlDataAdapter (选择id,来自学习的名字,con);

//dr.Fill(ds);

//grdview.DataSource = ds;

SqlCommand cmd = new SqlCommand(select id,study from study,con);

SqlDataReader read = cmd.ExecuteReader();

grdview.DataSource =读;

grdview.DataBind();

}

catch(例外情况)

{

抛出前一个;

}

}

}





数据库代码:



  CREATE   TABLE  STUDY(ID  CHAR  16 ),NAME  VARCHAR  100 ))
INSERT INTO STUDY(ID,NAME) VALUES (REPLACE(( RIGHT (NEWID(),< span class =code-digit> 17 )),' - ',< span class =code-string>' '),' GANESH'
INSERT INTO STUDY(ID ,NAME) VALUES (REPLACE(( RIGHT (NEWID(), 17 )),' - '' ') ,' RAMESH'
INSERT INTO STUDY(ID,NAME) VALUES (REPLACE((正确(NEWID(), 17 )),' - '' '),' SURESH'
SELECT * FROM STUDY







谢谢&此致,

Ganesh kumar K


Daer All;

Design Code:

<asp:GridView ID="grdView" runat="server" DataKeyNames="ID" AutoGenerateColumns="false"

                    OnSelectedIndexChanged="grdView_SelectedIndexChanged">
                    <Columns>
                        <asp:BoundField DataField="ID" Visible="false" HeaderText="ID"></asp:BoundField>
                        <asp:BoundField DataField="NAME" Visible="true" HeaderText="NAME"></asp:BoundField>
                    </Columns>
                </asp:GridView>



C# Code Behind :

protected void grdView_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string index = grdView.DataKeyNames.ToString();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }




Once I''m Clicking the gridview The event Selectedindex changed is not getting fired.. Kindly guide me to get out of it..

And If you can give me a example to retrieve data of particular row which I''m selecting from grid Pls.. thanks in advance :-)

解决方案

You need to have a button firing select command in the gridview by default clicking a row does not fire this event. check this link out http://stackoverflow.com/questions/8358641/why-doesnt-my-gridview-selectedindexchanged-event-fire[^]

Regards
Pawan


This below Codings is to retrieve a data from ASP Datagrid. Those who are beginers to ASP.net this code will be very much useful to know.Please revert me if you facing any problem with this code.Let me try to help you :-)Please don''t hesitate to go through all the codes..Hope just a copy paste of these codes in corresponding places will be works by changing your own connection string..Thanks :-)

ASPX Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>

    <script language="javascript" type="text/javascript">
        function DO(ID) {
            document.getElementById("hdnID").value = ID;
            document.getElementById("form1").submit();
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table width="100%">
            <tr>
                <td colspan="2" align="center">
                    <asp:DataGrid ID="grdview" runat="server" AutoGenerateColumns="false" OnItemDataBound="ItemBound">
                        <Columns>
                            <asp:BoundColumn DataField="ID" HeaderText="ID" Visible="false"></asp:BoundColumn>
                            <asp:BoundColumn DataField="NAME" HeaderText="NAME"></asp:BoundColumn>
                        </Columns>
                    </asp:DataGrid>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
                    <input type="hidden" id="hdnID" runat="server" />
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>




C# Code:

public partial class Ganesh : System.Web.UI.Page
{
SqlConnection con;
protected void Page_Load(object sender, EventArgs e)
{
try
{
con = new SqlConnection(@"data source=GANESH-VAIO;initial catalog=GANESH;user id=sa;password=cool");
if (!IsPostBack)
{
FillGrid();
}
else
{
if (!string.IsNullOrEmpty(hdnID.Value))
{
GetValue();
ViewState["ID"] = hdnID.Value;
hdnID.Value = "";
}
}
}
catch (Exception ex)
{
Response.Redirect(ex.Message);
}
}

public void GetValue()
{
DataSet ds;
try
{
ds = new DataSet();
con.Open();
SqlDataAdapter dr = new SqlDataAdapter("select id,name from study where id=''" + hdnID.Value.Trim() + "''", con);
dr.Fill(ds);
if(ds!=null && ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0)
{
txtName.Text = ds.Tables[0].Rows[0]["NAME"].ToString();
}
}
catch (Exception ex)
{
throw ex;
}
}

protected void ItemBound(object sender, DataGridItemEventArgs e)
{
TableRow dr;
try
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
dr = (TableRow)e.Item.Cells[0].Parent;
dr.Attributes.Add("OnClick", "DO(''" + e.Item.Cells[0].Text + "'');");
}
}
catch (Exception ex)
{
Response.Redirect(ex.Message);
}
}

protected void FillGrid()
{
DataSet ds;
try
{
ds = new DataSet();
con.Open();
//SqlDataAdapter dr = new SqlDataAdapter("select id,name from study", con);
//dr.Fill(ds);
//grdview.DataSource = ds;
SqlCommand cmd = new SqlCommand("select id,name from study", con);
SqlDataReader read = cmd.ExecuteReader();
grdview.DataSource = read;
grdview.DataBind();
}
catch (Exception ex)
{
throw ex;
}
}
}


DATABASE CODE :

CREATE TABLE STUDY(ID CHAR(16),NAME VARCHAR(100))
INSERT INTO STUDY (ID,NAME) VALUES (REPLACE((RIGHT(NEWID(),17)),'-',''),'GANESH')
INSERT INTO STUDY (ID,NAME) VALUES (REPLACE((RIGHT(NEWID(),17)),'-',''),'RAMESH')
INSERT INTO STUDY (ID,NAME) VALUES (REPLACE((RIGHT(NEWID(),17)),'-',''),'SURESH')
SELECT * FROM STUDY




Thanks & Regards,
Ganesh kumar K


这篇关于GridView Selectedindex更改事件未被触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆