GridView中的DropDownList

时间:2016-04-04 13:32:11

标签: c# asp.net gridview

假设我有一个Gridview有一些行。我有两列包含下拉列表。 我的问题是当GridView的SelectedIndexChanged事件发生在一个下拉列表中时,找到GridView的RowIndex,这样我就可以在同一行中应用另一个下拉列表的功能(也可以阅读注释)。 示例代码列在此处:

protected void dropdown1_SelectedIndexChanged(object sender, EventArgs e)
{
    // I want the row index so that i can apply the functionality in same row
    // If this doesn't work, any alternative ?
}


protected void func()
{
    DataTable dt = (DataTable)ViewState["CurrentTable"]
    for(int i = 0; i<dt.Rows.Count; i++) 
    {
        DropdownList d1 = (DropDownList)GridView1.Rows[i].Cells[0].FindControl("dropdown1");
        DropdownList d2 = (DropDownList)GridView1.Rows[i].Cells[1].FindControl("dropdown2");
    }
}

2 个答案:

答案 0 :(得分:1)

您可以这样获取GridView行:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define EXTRACHARS 2
#define SIZE 10

static void clear_buf(void)
{
  int ch;
  while(ch = getc(stdin), ch != '\n' && ch!=EOF);
  clearerr(stdin);
}
int main(void)
{
  int c = 0; 
  char seq[SIZE + EXTRACHARS];

  printf("Enter 10 * or ' ': ");  
  fgets(seq, SIZE+EXTRACHARS, stdin);
  if (seq[strlen(seq)- 1] != '\n')
    {
      printf("Buffer overflowed \n");
      clear_buf();
    }
  else
    {
      while(c < SIZE)
    {
      if(seq[c] == '*')
        {
          printf("1");
        }
      else if(seq[c] == ' ')
        {
          printf("0");
        }
      ++c;
    }
      printf("\n");
    }
  return EXIT_SUCCESS;
}

答案 1 :(得分:0)

EventArgs更改为DataGridViewCellEventArgs,您就可以从e获取行

所以你的方法变成了:

protected void dropdown1_SelectedIndexChanged(object sender, EventArgs e)
{
    int row = e.RowIndex;
}