protected void InfoContentDropdownlist_SelectIndexChanged(object sender, System.EventArgs e) //一定要声明成protected或者public,不能是private的。
{
TQService.TQService service = new TQService.TQService();
DataSet pds = service.GetInfoCode();
int Len = pds.Tables[0].Rows.Count;
string ddsstring;
string ddlstring;
DropDownList ddl = (DropDownList)sender;
DropDownList dds = (DropDownList)DataGrid1.Items[0].FindControl("InfoContentDropdownlist"); ddlstring = ddl.SelectedItem.Text; for(int DataCount=0; DataCount<Len; DataCount++)
{
ddsstring = pds.Tables[0].Rows[DataCount]["infocode"].ToString();
if(ddsstring == ddlstring)
{
ddsstring = pds.Tables[0].Rows[DataCount]["infocontent"].ToString();
if(dds != null)
dds.SelectedValue = ddsstring;
break;
}
}
}

解决方案 »

  1.   

    绑定是不是放在!IsPostBack
    绑定代码发出来看看
      

  2.   

    可能你的程序会有以下问题:
    1、DataGrid1.Items[0]好像是第一列,也就是标题行,你是不是弄错了?
    2、DataGrid1在你调用这个方法前还没有进行绑定。
    3、你能保证dds.SelectedValue = ddsstring;能执行吗?
      

  3.   

    我的是14列,但是DataGrid1.Items[14]会发生错误,索引值无效
      

  4.   

    绑定代码:
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    this.BindGrid();
    }
    } private void BindGrid() 
    { service = new TQService.TQService();
    ds = service.GetBasicInfo();
    if(ds!=null)
    {
    this.DataGrid1.DataSource = ds.Tables[0].DefaultView;
    this.DataGrid1.DataBind();
    }
    }
      

  5.   

    ——————
    我的是14列,但是DataGrid1.Items[14]会发生错误,索引值无效
    ————————
    DataGrid1.Items[13]
      

  6.   

    int Len = pds.Tables[0].Rows.Count-1;
    for(int DataCount=1; DataCount<Len; DataCount++)
    {}
      

  7.   

    看来是多表头出了问题。在其上还有一层表头。但是在这种情况下怎么获取14列的控件呢?
    private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    ListItemType lit = e.Item.ItemType; 
    if (lit == ListItemType.Header) 

    Table t = (Table)DataGrid1.Controls[0]; 
    //t.Controls.Clear();
    DataGridItem dgi = new  DataGridItem(1,0,ListItemType.Pager);  TableCell tc = new TableCell(); 
    tc.ColumnSpan = 2; 
    tc.HorizontalAlign = HorizontalAlign.Center;
    tc.VerticalAlign = VerticalAlign.Middle;
    tc.BackColor = Color.White;
    tc.ForeColor = Color.Black;
    tc.Font.Bold = true;
    tc.Font.Underline = false;
    tc.Text = "信息类型"; 

    dgi.Cells.Add(tc);   tc = new TableCell(); 
    tc.ColumnSpan = 4; 
    tc.HorizontalAlign = HorizontalAlign.Center;
    tc.VerticalAlign = VerticalAlign.Middle;
    tc.BackColor = Color.White;
    tc.ForeColor = Color.Black;
    tc.Font.Bold = true;
    tc.Font.Underline = false;
    tc.Text = "信息输出"; 

    dgi.Cells.Add(tc);  tc = new TableCell(); 
    tc.ColumnSpan = 9; 
    tc.HorizontalAlign = HorizontalAlign.Center;
    tc.VerticalAlign = VerticalAlign.Middle;
    tc.BackColor = Color.White;
    tc.ForeColor = Color.Black;
    tc.Font.Bold = true;
    tc.Font.Underline = false;
    tc.Text = "信息发生情况"; 

    dgi.Cells.Add(tc);  tc = new TableCell(); 
    tc.ColumnSpan = 4; 
    tc.HorizontalAlign = HorizontalAlign.Center;
    tc.VerticalAlign = VerticalAlign.Middle;
    tc.BackColor = Color.White;
    tc.ForeColor = Color.Black;
    tc.Font.Bold = true;
    tc.Font.Underline = false;
    tc.Text = "接收情况"; 

    dgi.Cells.Add(tc);  tc = new TableCell(); 
    tc.ColumnSpan = 4; 
    tc.HorizontalAlign = HorizontalAlign.Center;
    tc.VerticalAlign = VerticalAlign.Middle;
    tc.BackColor = Color.White;
    tc.ForeColor = Color.Black;
    tc.Font.Bold = true;
    tc.Font.Underline = false;
    tc.Text = "信息核查情况"; 

    dgi.Cells.Add(tc);  tc = new TableCell(); 
    tc.ColumnSpan = 3; 
    //tc.HorizontalAlign = HorizontalAlign.Center;
    //tc.VerticalAlign = VerticalAlign.Middle;
    tc.BackColor = Color.White;
    tc.ForeColor = Color.Black;
    tc.Font.Bold = true;
    tc.Font.Underline = false;
    tc.Text = "数据操作"; 

    dgi.Cells.Add(tc);  t.Rows.AddAt(1,dgi); 

    }
      

  8.   

    我已经改了,还是不行 protected void InfoCodeDropdownlist_SelectIndexChanged(object sender, System.EventArgs e) //一定要声明成protected或者public,不能是private的。
    {
    //在这里就可以加入其他代码
    TQService.TQService service = new TQService.TQService();
    DataSet pds = service.GetInfoCode();
    int Len = pds.Tables[0].Rows.Count;
    string ddsstring;
    string ddlstring;
    DropDownList ddl = (DropDownList)sender;
    DropDownList dds; foreach (DataGridItem item in this.DataGrid1.Items)
    {
    dds = (DropDownList)item.FindControl("InfoContentDropdownlist"); ddlstring = ddl.SelectedItem.Text.Trim(); for(int DataCount=0; DataCount<Len; DataCount++)
    {
    //获取数据
    ddsstring = pds.Tables[0].Rows[DataCount]["infocode"].ToString().Trim();
    if(ddsstring == ddlstring)
    {
    ddsstring = pds.Tables[0].Rows[DataCount]["infocontent"].ToString().Trim();
    if(dds != null)
    dds.SelectedValue = ddsstring;
    break;
    }
    }
    }
    }