none
为什么我点选择按纽获取GridView.SelectedIndex;第一次老是-1 点第二次才是其正确值? RRS feed

答案

  • 在OnSelectedIndexChanged事件里做

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 
     
    <!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></title>  
    </head> 
    <body> 
      <form id="form1" runat="server">  
      <asp:GridView ID="GridView1" AutoGenerateColumns="true" AutoGenerateSelectButton="true" 
        SelectedIndex="0" OnSelectedIndexChanged="CustomersGridView_SelectedIndexChanged" 
        runat="server">  
        <SelectedRowStyle BackColor="LightCyan" ForeColor="DarkBlue" Font-Bold="true" /> 
      </asp:GridView> 
      </form> 
    </body> 
    </html> 
    .

    using System;  
    using System.Collections.Generic;  
    using System.Web;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
     
    public partial class Default2 : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
          if (!Page.IsPostBack)  
          {  
            GridView1.DataSource = CreateDataSourceByXianhuiMeng();  
            GridView1.DataBind();  
          }  
        }  
     
        System.Data.DataView CreateDataSourceByXianhuiMeng()  
        {  
          System.Data.DataTable dt = new System.Data.DataTable();  
          System.Data.DataRow dr;  
          dt.Columns.Add(new System.Data.DataColumn("学生班级"typeof(System.String)));  
          dt.Columns.Add(new System.Data.DataColumn("学生姓名"typeof(System.String)));  
          dt.Columns.Add(new System.Data.DataColumn("语文"typeof(System.Decimal)));  
          dt.Columns.Add(new System.Data.DataColumn("数学"typeof(System.Decimal)));  
          dt.Columns.Add(new System.Data.DataColumn("英语"typeof(System.Decimal)));  
          dt.Columns.Add(new System.Data.DataColumn("计算机"typeof(System.Decimal)));  
     
          for (int i = 0; i < 8; i++)  
          {  
            System.Random rd = new System.Random(Environment.TickCount * i); ;  
            dr = dt.NewRow();  
            dr[0] = "班级" + i.ToString();  
            dr[1] = "【孟子E章】" + i.ToString();  
            dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);  
            dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);  
            dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);  
            dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);  
            dt.Rows.Add(dr);  
          }  
          System.Data.DataView dv = new System.Data.DataView(dt);  
          return dv;  
        }  
     
        protected void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e)  
        {  
          Response.Write(GridView1.SelectedIndex.ToString());  
        }  
     
     
    }  
     

    2009年2月6日 14:45
    版主

全部回复

  •  为什么我点选择按纽获取GridView.SelectedIndex;第一次老是-1 点第二次才是其正确值?
    2009年2月6日 12:48
  • 贴你的代码
    2009年2月6日 14:31
    版主
  • 在OnSelectedIndexChanged事件里做

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 
     
    <!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></title>  
    </head> 
    <body> 
      <form id="form1" runat="server">  
      <asp:GridView ID="GridView1" AutoGenerateColumns="true" AutoGenerateSelectButton="true" 
        SelectedIndex="0" OnSelectedIndexChanged="CustomersGridView_SelectedIndexChanged" 
        runat="server">  
        <SelectedRowStyle BackColor="LightCyan" ForeColor="DarkBlue" Font-Bold="true" /> 
      </asp:GridView> 
      </form> 
    </body> 
    </html> 
    .

    using System;  
    using System.Collections.Generic;  
    using System.Web;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
     
    public partial class Default2 : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
          if (!Page.IsPostBack)  
          {  
            GridView1.DataSource = CreateDataSourceByXianhuiMeng();  
            GridView1.DataBind();  
          }  
        }  
     
        System.Data.DataView CreateDataSourceByXianhuiMeng()  
        {  
          System.Data.DataTable dt = new System.Data.DataTable();  
          System.Data.DataRow dr;  
          dt.Columns.Add(new System.Data.DataColumn("学生班级"typeof(System.String)));  
          dt.Columns.Add(new System.Data.DataColumn("学生姓名"typeof(System.String)));  
          dt.Columns.Add(new System.Data.DataColumn("语文"typeof(System.Decimal)));  
          dt.Columns.Add(new System.Data.DataColumn("数学"typeof(System.Decimal)));  
          dt.Columns.Add(new System.Data.DataColumn("英语"typeof(System.Decimal)));  
          dt.Columns.Add(new System.Data.DataColumn("计算机"typeof(System.Decimal)));  
     
          for (int i = 0; i < 8; i++)  
          {  
            System.Random rd = new System.Random(Environment.TickCount * i); ;  
            dr = dt.NewRow();  
            dr[0] = "班级" + i.ToString();  
            dr[1] = "【孟子E章】" + i.ToString();  
            dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);  
            dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);  
            dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);  
            dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);  
            dt.Rows.Add(dr);  
          }  
          System.Data.DataView dv = new System.Data.DataView(dt);  
          return dv;  
        }  
     
        protected void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e)  
        {  
          Response.Write(GridView1.SelectedIndex.ToString());  
        }  
     
     
    }  
     

    2009年2月6日 14:45
    版主
  • 楼主,请不要同样的帖子发两次,我已经帮你合并了这2个帖子。 :)

    理解的越多,需要记忆的就越少
    2009年2月7日 11:01
    版主