• 如何獲得GridView內LinkButton的RowIndex? (初級) (.NET) (ASP.NET)(转)


    NET 2.0就改用SqlDataSource和GridView了,LinkButtom一樣得放在TemplateField,但GridView沒有ItemCommand event,取而代之的是RowCommand event。

    14  protected void Page_Load(object sender, EventArgs e) {

    15    if (!IsPostBack)

    16      GridView1_DataBind();

    17  }

    18

    19  protected void GridView1_DataBind() {

    20    SqlDataSource1.ConnectionString = @"Data Source=.\sqlexpress;Initial Catalog=pubs;Integrated Security=True";

    21    SqlDataSource1.SelectCommand = "SELECT TOP 10 " +

    22                                          "fname," +

    23                                          "lname " +

    24                                   "FROM employee";

    25    GridView1.DataSourceID = SqlDataSource1.ID;

    26    GridView1.DataKeyNames = new string[] { "lname" };

    27    GridView1.AutoGenerateColumns = false;

    28  }

    29

    30  protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {

    31    if (e.CommandName == "Select") {

    32      int rowIndex = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;

    33      Label1.Text = GridView1.DataKeys[rowIndex].Value.ToString();

    34    }

    35  }

    36</script>

    37

    38<html xmlns="http://www.w3.org/1999/xhtml">

    39<head runat="server">

    40  <title>Untitled Page</title>

    41</head>

    42<body>

    43  <form id="form1" runat="server">

    44    <div>

    45      <asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">

    46        <Columns>

    47          <asp:TemplateField HeaderText="First Name">

    48            <ItemTemplate>

    49              <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Select" Text='<%#Eval("fname")%>'></asp:LinkButton>

    50            </ItemTemplate>

    51          </asp:TemplateField>

    52        </Columns>

    53      </asp:GridView>

    54    </div>

    55    <asp:Label ID="Label1" runat="server"></asp:Label>

    56    <asp:SqlDataSource ID="SqlDataSource1" runat="server"></asp:SqlDataSource>

    57  </form>

    58</body>

    59</html>

    最難理解的應該是32行

    int rowIndex = ((GridViewRow)((LinkButton)e.CommandSource).NamingContainer).RowIndex;

    e.CommandSource傳的是按下去的LinkButton,不過由於傳回的是Object,就得自行轉成LinkButton,但由於我們想知道的是RowIndex,而LinkButton是包含在GridViewRow內,所以透過NamingContainer傳回目前的GridViewRow,但傳回的是Control,所以需在轉成GridViewRow後才能有RowIndex property。

  • 相关阅读:
    HTML5 API分享
    承接VR外包,虚拟现实外包,北京正规公司
    虚拟现实外包—动点飞扬软件专门承接VR/AR场景、游戏、项目外包
    Unity3d外包—就找北京动点软件(长年承接Unity3d软件、游戏项目外包)
    Kinect外包团队— 2016中国VR开发者论坛第一期
    Kinect外包-就找北京动点飞扬软件(长年承接微软Kinect体感项目外包,有大型Kinect案例)
    Win10外包公司(长年承接Win10App外包、Win10通用应用外包)
    HTML5外包注意事项-开发HTML5游戏的九大坑与解决方法剖析
    HTML5外包团队:HTML5 Canvas使用教程
    libgo 2.0发布
  • 原文地址:https://www.cnblogs.com/rooney/p/1268061.html
Copyright © 2020-2023  润新知