private void dataGridViewTicketStatus_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1 && e.ColumnIndex > -1) { if (dataGridViewTicketStatus.Columns[e.ColumnIndex].Name == "Book") { var data = dataGridViewTicketStatus.Rows[e.RowIndex].DataBoundItem as TrainLeftTicketStatus; if (data.CanBook) { var form = new SubmitOrderRequestForm(data); form.ShowDialog(); } else { MessageBox.Show(this, "该车次无票可定", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } }
private void OnQuickOrders(TrainLeftTicketStatus data) { if (!data.CanBook) return; if (!data.HasSeatTypes(_SeatTypes)) return; DetermineCall(() => { if (vOrderRequestForm == null && !isTicketSuccess) { new SoundPlayer(Properties.Resources.notify).Play(); this.Activate(); this.BringToFront(); QuickAttentionWorker.PauseWorking = true; vOrderRequestForm = new SubmitOrderRequestForm(data, _Passengers, _SeatTypes, (response) => { TicketdataGridView.Visible = true; isTicketSuccess = true; vOrderRequestForm = null; #region DataTable PassengerList = new DataTable(); var textBuilder = new StringBuilder(128); var passengersHtml = StringHelper.FindString(ref response, "class=\"table_list\">", "</table>"); var fieldHeader = Regex.Match(passengersHtml, @"<tr[^>]*>(\s*<td[^>]*>.*?</td>\s*){12}</tr>", RegexOptions.Singleline); if (fieldHeader.Success) { var fieldNames = new string[12]; int i = 0; foreach (Match m in Regex.Matches(fieldHeader.Value, @"<td[^>]*>(?<name>.*?)</td>", RegexOptions.Singleline)) { fieldNames[i] = Regex.Replace(m.Groups["name"].Value, @"\s", _m => ""); PassengerList.Columns.Add(fieldNames[i], typeof(string)); i++; } Match passenger = fieldHeader.NextMatch(); while (passenger.Success) { i = 0; var row = PassengerList.NewRow(); foreach (Match m in Regex.Matches(passenger.Value, @"<td[^>]*>(?<name>.*?)</td>", RegexOptions.Singleline)) { row[fieldNames[i++]] = Regex.Replace(m.Groups["name"].Value, @"<[^>]+/?>|\s", _m => ""); } PassengerList.Rows.Add(row); passenger = passenger.NextMatch(); } var priceBlock = StringHelper.FindString(ref response, "<ul id=\"Num\">", "</ul>"); if (priceBlock != null) { foreach (Match m in Regex.Matches(priceBlock, "<li[^>]*>(?<val>.*?)</li>", RegexOptions.Singleline)) { textBuilder.Append(m.Groups["val"].Value); textBuilder.Append(" "); } } TicketdataGridView.AutoGenerateColumns = true; TicketdataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; TicketdataGridView.DataSource = PassengerList; TicketdataGridView.Columns["证件号"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } #endregion }); vOrderRequestForm.FormClosed += (s, e) => { QuickAttentionWorker.PauseWorking = false; vOrderRequestForm = null; }; vOrderRequestForm.ShowDialog(); } }); }