私はこのサイトとC#.Netの使用に非常に慣れていないので、優しくしてください。
私のプロジェクトは何ですか? 私は、医師がオンラインで記入できる両親の副業のタイムシートを作成しています。呼び出し時間と通常の時間の両方の正しい時間を等しくするためのステートメントの場合、私が作成した呼び出し時間と通常の時間があります。
私は何を達成しようとしていますか? ユーザーに1つの送信ボタンをクリックして、各日に対応するドロップダウンリストの各グループに方程式を実行させ、合計を表示してもらいたいと思います。
私の質問は何ですか?最初にドロップダウンリストのセットをグループ化してから、コードが「一部のラベル(LabelMondayCALL.Text)に対して、このグループ(DDL_In_Monday、DDL_OutBreak_Mondayなど)のドロップダウンを使用して、ラベルがどうなるかを見つけてください。」
なぜ私はこれをしたいのですか?個々の日ごとにコードのページをコピーして貼り付けることを避け、将来の変更に備えて物事をクリーンでシンプルに保つようにします。
ここにいくつかのコードがあります:
DateTime MondayDDL4 = DateTime.Parse(DDL_Out_Monday.SelectedValue);
DateTime MondayDDL3 = DateTime.Parse(DDL_InBreak_Monday.SelectedValue);
DateTime MondayDDL2 = DateTime.Parse(DDL_OutBreak_Monday.SelectedValue);
DateTime MondayDDL1 = DateTime.Parse(DDL_In_Monday.SelectedValue);
else if ((MondayDDL1 <= FromCompHours) & (MondayDDL4 <= FromCompHours)) //comp time earlier than 6:30
{
LabelMondayREG.Text = "00:00:00";//works
LabelMondayCALL.Text = MondayDDL4.Subtract(MondayDDL1).ToString();//works
if ((BreakStart != "00:00:00") & (BreakEnd != "00:00:00"))
{
LabelMondayREG.Text = "00:00:00";
String CompTimeBreakHours = (BreakEndDT.Subtract(BreakStartDT)).ToString();
LabelMondayCALL.Text = ((DateTime.Parse(LabelMondayCALL.Text)) - (DateTime.Parse(CompTimeBreakHours))).ToString();
}
}
あなたが提供できるどんな助けにも感謝します、そして私がこのようなものにかなり新しいと言ったように、私が単純化できる何か他のものを見つけたら私に知らせてください。
ここにもう少しコードと実際のサイトの写真がありますが、ここに私がしていることのもう少しの説明があります:基本的にこれらの方程式は医者が休憩する時間(通話時間または通常時間)を差し引くべきかを決定していますから、週の1日、ドロップダウンメニューの行から。ただし、ドロップダウンリストのセットごとにこのコードをコピーしたくありません。そのため、通話時間と通常時間のラベルで、ラベルが付けられた日に対応するドロップダウンのみを使用するインスタンスを作成する方法があるかどうかを知りたいと思いました。
したがって、MondayDDL1、2、、3、および4は方程式を実行し、それらの回答はLabelMondayCallおよびLabelMondayRegに入力されます。
その後
TuesdayDDL1、2、、3、および4は方程式を実行し、それらの回答はLabelTuesdayCallおよびLabelTuesdayRegに入力されます
私は十分な評判を持っていない画像を気にしないでください
レイアウトは次のようになりますが
mondayDDL1 mondayDDL2 mondayDDL3 mondayDDL4 LABELmondayREG LABELmondayCALL
tuesdayDDL1 tuesdayDDL2 tuesdayDDL3 tuesdayDDL4 LABELtuesdayREG LABELtuesdayCALL
protected void ButtonCalculate_Click(object sender, EventArgs e)
{
//DropDownList2.Items.Clear();
//DropDownList2.SelectedValue = null;
//DropDownList3.Items.Clear();
//DropDownList3.SelectedValue = null;
if (DDL_OutBreak_Monday.SelectedValue == "----")
{
DDL_OutBreak_Monday.SelectedValue = DateTime.Parse("00:00:00").ToShortTimeString();
}
if (DDL_InBreak_Monday.SelectedValue == "----")
{
DDL_InBreak_Monday.SelectedValue = DateTime.Parse("00:00:00").ToShortTimeString();
}
DateTime MondayDDL4 = DateTime.Parse(DDL_Out_Monday.SelectedValue);
DateTime MondayDDL3 = DateTime.Parse(DDL_InBreak_Monday.SelectedValue);
DateTime MondayDDL2 = DateTime.Parse(DDL_OutBreak_Monday.SelectedValue);
DateTime MondayDDL1 = DateTime.Parse(DDL_In_Monday.SelectedValue);
//DDL1 = DateTime.Parse(DDL_In_Tuesday.SelectedValue);// END POINT---------------------------END POINT
String BreakStart = DDL_OutBreak_Monday.SelectedValue;
String BreakEnd = DDL_InBreak_Monday.SelectedValue;
DateTime BreakStartDT = DateTime.Parse(BreakStart);
DateTime BreakEndDT = DateTime.Parse(BreakEnd);
DateTime FromCompHours = DateTime.Parse("6:30:00");
DateTime ToCompHours = DateTime.Parse("16:30:00");
Label1.Text = "";
Label2.Text = "";
Label3.Text = "";
LabelMondayREG.Text = "";
LabelMondayCALL.Text = "";
//int result = DateTime.Compare(DDL1, DDL2);
if ((MondayDDL1 <= FromCompHours) & (MondayDDL4 >= ToCompHours))//Comp time at both ends
{
Label2.Text = FromCompHours.Subtract(MondayDDL1).ToString(); //finds comp hours before 6:30 WORKS
Label3.Text = MondayDDL4.Subtract(ToCompHours).ToString(); //finds comp hours after 16:30 WORKS
LabelMondayREG.Text = ("10:00:00");
//LabelHolder.Text = (DateTime.Parse(Label2.Text)) + (DateTime.Parse(Label3.Text)).ToString(); //adds the two comp hours together
//TimeSpan SubtractReg = DDL2.Subtract(DDL1); //finds the difference of from minus to
DateTime To = DateTime.Parse(Label2.Text);//convert text to datetime of earlier time
DateTime From = DateTime.Parse(Label3.Text);//convert text to datetime of later time
LabelMondayCALL.Text = (To.TimeOfDay + From.TimeOfDay).ToString();
//LabelMondayCALL.Text = "10:00:00";
if ((BreakStartDT != DateTime.Parse("00:00:00")) & (BreakEndDT != DateTime.Parse("00:00:00")))
{
//DateTime MondayBreak = MondayDDL3.Subtract(MondayDDL2);
if ((MondayDDL2 <= FromCompHours) & (MondayDDL3 <= FromCompHours)) //Start before 6:30 end after 16:30 w/ break before 6:30
{
LabelMondayCALL.Text = TimeSpan.Parse(LabelMondayCALL.Text).Subtract(MondayDDL3.Subtract(MondayDDL2)).ToString();
//LabelMondayCALL.Text = "error1"; //(DateTime.Parse(LabelMondayCALL.Text)).ToString();
}
if ((ToCompHours >= MondayDDL2) & (MondayDDL2 >= FromCompHours) & (ToCompHours >= MondayDDL3) & (MondayDDL3 >= FromCompHours)) //Start before 6:30 end after 16:30 /w break between 6:30 and 16:30
{
LabelMondayREG.Text = TimeSpan.Parse(LabelMondayREG.Text).Subtract(MondayDDL3.Subtract(MondayDDL2)).ToString();
}
if ((MondayDDL2 >= ToCompHours) & (MondayDDL3 >= ToCompHours)) //Start before 6:30 end after 16:30 /w break after 16:30
{
LabelMondayCALL.Text = TimeSpan.Parse(LabelMondayCALL.Text).Subtract(MondayDDL3.Subtract(MondayDDL2)).ToString();
}
if ((MondayDDL2 <= FromCompHours) & (MondayDDL3 >= FromCompHours) & (MondayDDL3 <= ToCompHours))
{
LabelMondayCALL.Text = TimeSpan.Parse(LabelMondayCALL.Text).Subtract(FromCompHours.Subtract(MondayDDL2)).ToString();
LabelMondayREG.Text = TimeSpan.Parse(LabelMondayREG.Text).Subtract(MondayDDL3.Subtract(FromCompHours)).ToString();
}
if ((MondayDDL2 <= ToCompHours) & (MondayDDL2 >= FromCompHours) & (MondayDDL3 >= ToCompHours))
{
LabelMondayCALL.Text = TimeSpan.Parse(LabelMondayCALL.Text).Subtract(ToCompHours.Subtract(MondayDDL2)).ToString();
LabelMondayREG.Text = TimeSpan.Parse(LabelMondayREG.Text).Subtract(MondayDDL3.Subtract(ToCompHours)).ToString();
}
}