查看图:http://lark.oicp.net/tnx/problem/img/Schedule.bmp
功能:
绑定火车时刻表
主表(车次,车种,始发站,终到站,始发时间,到达时间,到达日期)
从表(车次,站名,到达时间,发车时间,计时(时))
批量添加、修改、删除操作
其中车种是帮定下拉框到DataGrid上的,代码如下:
private void DtgTrainSchedule_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
try
{
DataGrid LvDtg = (DataGrid)sender;
DataGrid.HitTestInfo LvHitInfo=LvDtg.HitTest(e.X,e.Y);
if(LvHitInfo.Type==DataGrid.HitTestType.Cell)
{
MvRowIndex = LvHitInfo.Row;
int i;
//这里如何操作可以使在鼠标点击子表的第二个单元格的时候不出现主表车种的下拉框
switch(LvHitInfo.Column)
{
case 1:
this.CbbVehicleTypeC.Height=this.DtgTrainSchedule.GetCurrentCellBounds().Height;
this.CbbVehicleTypeC.Width=this.DtgTrainSchedule.GetCurrentCellBounds().Width;
this.CbbVehicleTypeC.Top=this.DtgTrainSchedule.GetCurrentCellBounds().Top;
this.CbbVehicleTypeC.Left=this.DtgTrainSchedule.GetCurrentCellBounds().Left;
for(i=0;i<this.CbbVehicleTypeC.Items.Count;i++)
{
if(this.DtgTrainSchedule[MvRowIndex,1].ToString()==this.CbbVehicleTypeC.Items[i].ToString())
{
this.CbbVehicleTypeC.SelectedIndex=i;
}
}
this.CbbVehicleTypeC.Visible=true;
break;
         default:
this.CbbVehicleTypeC.Visible=false; break;
}
}
else
{
this.CbbVehicleTypeC.Visible=false;
}
}
catch(Exception ex)
{
MessageBox.Show(this,ex.Message,"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}private void CbbVehicleTypeC_SelectedIndexChanged(object sender, System.EventArgs e)
{
try
{
this.DtgTrainSchedule[MvRowIndex,1]=this.CbbVehicleTypeC.Text.ToString();
switch(this.CbbVehicleTypeC.Text.ToString())
{
                    case "普快":
this.DtgTrainSchedule[MvRowIndex,2]="0";
break;
case "空调普快":
this.DtgTrainSchedule[MvRowIndex,2]="1";
break;
case "空调快速":
this.DtgTrainSchedule[MvRowIndex,2]="2";
break;
case "其它":
this.DtgTrainSchedule[MvRowIndex,2]="3";
break;
}
this.CbbVehicleTypeC.Visible=false;
}
catch(Exception ex)
{
MessageBox.Show(this,ex.Message,"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}问题1:代码中注释的问题。
问题2:由于我主表查询语句中有些格式化字段,这样在点子表的时候就会显示多余的字段在DataGrid的第一行上(主表字段多余VehicleTypeC和SpanDayNumsC)
查询语句:Select AutoID, VehicleNo, Case VehicleType When '0' Then '普快' When '1' Then '空调普快' When '2' Then '空调快速' When '3' Then '其它' End As VehicleTypeC, VehicleType, BeginStation, EndStation, BeginTime, EndTime, CONVERT(varchar(5), '第' + CONVERT(char(1), SpanDayNums + 1) + '日') As SpanDayNumsC, SpanDayNums From TBTrainScheduleMain