2张表GridView1, DetailsView1。GridView1表中添加了选择按钮点中选择按钮在 DetailsView1中显示选中的详细信息。在GridView1中编写了如下语句
 protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
           this.DetailsView1.PageIndex = this.GridView1.SelectedRow.DataItemIndex;
        }
这时如我选中GridView1表中编号001的数据DetailsView1中择显示了001的详细信息。如果我把编号排大到小排序这时GridView1表中第一个编号100,选中100这时DetailsView1表中显示的详细信息还是001的?选中第二个编号99 DetailsView1表中显示的详细信息是002的详细信息。这个为什么该怎么修改。
还有个问题Calendar控件选择日期是总背其他控件遮挡无法选择日期如何让Calendar控件总在最上层。求高手解答

解决方案 »

  1.   

    你那取的都是行索引 当然是错的咯
    你为GridView1设置DataKeyNames 然后根据行索引去取主键值 
    比如:
    string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
      

  2.   

    自带的Calendar控件基本很少用过 所以不清楚 基本都是用My97DatePicker这种的第三方的
      

  3.   

    你第一个不凡获取行的ID,让DetailsView1执行数据库。Calendar类似于下面这段代码
    <asp:TextBox ID="TextBox_FinishDate" 
                                        runat="server" CssClass="textbox"></asp:TextBox>
                                    <asp:ImageButton ID="ImageButton_FinishDate" runat="Server" 
                                        AlternateText="Click to show calendar" 
                                        ImageUrl="~/image/Calendar_scheduleHS.png" />
                                    <asp:CalendarExtender ID="CalendarExtender2" runat="server" Format="yyyy-MM-dd" 
                                        PopupButtonID="ImageButton_FinishDate" TargetControlID="TextBox_FinishDate">
                                    </asp:CalendarExtender>
    仅供参考
      

  4.   

    可以参照这个
      protected void MasterGridView_RowDataBound( object sender, GridViewRowEventArgs e )
      {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {      GridView oGridView = (GridView)e.Row.FindControl("DetailGridView");
          if (oGridView != null)
          {
            OleDbCommand cmd = new OleDbCommand("select top 10 * from Document Where pid = " + MasterGridView.DataKeys[e.Row.RowIndex].Value, cn1);
            OleDbDataReader dr1 = cmd.ExecuteReader();
            oGridView.DataSource = dr1;
            oGridView.DataBind();
            dr1.Close();
            cmd.Dispose();
          }
        }
      }