页面布局:
左半部分:文本框(输入一个日期,如:200801)
右半部分:显示信息,共四列,分别是:日期、星期几、時給曜日、金額
第一、二列是根据文本框中输入的那个日期(年月),
第一列:动态列出这个月的所有天数
第二列:动态得出相应的星期几
第三、四列是根据第一、二列从数据库中抽出数据显示出来。
还有,第一二三列用lalbel显示的,第四列是用textbox显示的。开始想用datagrid和datatable,可研究了好几天,只实现了前两列。请大家帮帮忙,我怎样实现比较好呢?

解决方案 »

  1.   

    可以用itemdatabound事件实现
    {
       dataset ds=//select * from table where 日期字段 between 2008-01-01 and 2008-01-30
       for(int i=0;i<ds.tables[0].rows.count;i++)
       {
           label mylabel=e.itme.findcontrol("你的日期label") as label;
            textbox textbox1=e.itme.findcontrol("你的日期textbox") as textbox;        if(mylabel!=null)
            {
                if(mylabel.text==ds.table[0].rows[0]["日期"].tostring())
                {
                    textbox1.text=ds.table[0].rows[0]["你的字段"].tostring()
                 }
            }  
       }
    }
      

  2.   

    不太明白,可能是我没表达清楚吧第一列根据文本框的年月,如:200801,动态列出:2008/1/1~~2008/1/31共31行
    第二列根据第一列的日期相应的列出这一天是星期几,如第一行第一列:2008/1/1,第二列第一行:星期二
    第三列根据第二列,如果是周六、周末,在数据库中根据周六或周末这天对应的日期,连接三个表得出第三列和第四列的值
    还是那样,第一二三列用lalbel显示的,第四列是用textbox显示的。 不知我这样说大家明白没?下午我用datatable在不加任何控件的条件下实现了信息的显示。
    但是我不知道该怎么加入lalbel,textbox控件,让信息在控件上显示。请大家再帮帮忙,不明白我的意思的话,请问。谢谢!!
      

  3.   

    把dataTable的信息显示到lable上吧?
    呵呵。
    这样用的:
    lable.text=datatable1.rows[0][0].tostring();
    datatable1表示表名后面的索引是正常的索引,第一个表示行,第二个表示列。00表示第一行第一列的值。依次类推。OK
      

  4.   

    明白楼上的意思,但是还有个问题是怎么在dataTable中加入控件呢?
    因为要实现自动列出信息,用datagrid试了好多次,可不行。
    只能用datatable来添加行和列,包括列名。
    我在网上查没找到在dataTable中可以加入控件的。
    代码如下:
    string year = this.TextBox1.Text.Trim().Substring(0, 4);
    string month =this.TextBox1.Text.Trim().Substring(4);
    DateTime current=new DateTime();
     current = Convert.ToDateTime(year + "-"+month+"-" + "01");
    int daysN = System.DateTime.DaysInMonth(Convert.ToInt32(year), Convert.ToInt32(month));
    int WeekDay=Convert.ToInt32(current.DayOfWeek);  DataTable dt=new DataTable();
    dt.Columns.Add("日付");
    dt.Columns.Add("曜日");
    dt.Columns.Add("対象時給");
    dt.Columns.Add("アップ額");
    for (int i=0;i<daysN;i++)
    {
    int nn=(i+WeekDay)%7;
    DataRow dr=dt.NewRow();
    dr["日付"]=year+'/'+month+'/'+(i+1);  switch(nn) 
    {
    case 0:
    dr["曜日"]="日曜";
     break;
    case 1:
    dr["曜日"]="月曜";
     break;
    case 2:
    dr["曜日"]="火曜";
     break;
    case 3:
    dr["曜日"]="水曜";
     break;
    case 4:
    dr["曜日"]="木曜";
     break;
    case 5:
    dr["曜日"]="金曜";
     break;
    case 6:
    dr["曜日"]="土曜";

     break;
    }
    if(dr["曜日"].ToString()=="土曜" ||  dr["曜日"].ToString()=="日曜")
    {
    string strSql1="select 名称 from T_M曜日区分 where 曜日区分=(select 曜日区分 from T_Mカレンダー_NEW  where 年月日='"+year+"/"+month+"/"+(i+1)+"')";
    string strSql="SELECT T_M曜日区分.名称, T_M_HourlyWageUp.HourlyWage FROM T_M_HourlyWageUp INNER JOIN "; 
                             strSql +="T_Mカレンダー_NEW ON T_M_HourlyWageUp.DaysOfTheWeek=T_Mカレンダー_NEW.曜日区分 INNER JOIN ";
     strSql +="T_M曜日区分 ON T_Mカレンダー_NEW.曜日区分 = T_M曜日区分.曜日区分 WHERE  T_Mカレンダー_NEW.年月日='"+year+"/"+month+"/"+(i+1)+"' and T_M_HourlyWageUp.StoreCD=2"; 

    dr["対象時給"]=DataBaseLink(strSql).Rows[0][0].ToString();
    dr["アップ額"]=DataBaseLink(strSql).Rows[0][1].ToString();
    }
    else
    {
    dr["対象時給"]="";
    dr["アップ額"]="";
    }

    dt.Rows.Add(dr);
    }
    DataGrid1.DataSource=dt;
    DataGrid1.DataBind();public DataTable DataBaseLink(string strSql)
    {
    string myconn="server=172.18.1.5;database=dbkintai;uid=sa;pwd=top";
    SqlConnection conn=new SqlConnection(myconn); DataSet ds=new DataSet();
    SqlDataAdapter sda=new SqlDataAdapter(strSql,conn);
    sda.Fill(ds);
    return ds.Tables[0]; 
    }我该怎么改才能实现需要的功能呢?
      

  5.   

    1楼的兄弟,
    我差不多看懂了你回的方法,试了试,为什么if语句一直不走呢?
    是不是一直取不到mylabel?
    请这位兄弟在帮帮忙看看。谢谢!!private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
      for(int   i=0;i <dt.Rows.Count;i++) 
      { 
    Label mylabel=e.Item.FindControl("lblDate") as Label; 
    TextBox txtUpPrice=e.Item.FindControl("txtPrice") as TextBox;
    if(mylabel!=null)
    {
      mylabel.Text=dt.Rows[i][0].ToString();
      txtUpPrice.Text=dt.Rows[i+1][3].ToString();
    }
       } 
    }