Каталог.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. namespace Демо
  12. {
  13. public partial class Каталог : Form
  14. {
  15. public Каталог()
  16. {
  17. InitializeComponent();
  18. SqlConnection cn;
  19. Program.conn(out cn);
  20. Program.Role.id = 0;
  21. SqlDataAdapter da = new SqlDataAdapter();
  22. DataTable table = new DataTable();
  23. buttonBack.Visible = false;
  24. SqlCommand command = new SqlCommand("select * from Услуги", cn);
  25. da.SelectCommand = command;
  26. da.Fill(table);
  27. Program.Role.table = table;
  28. if (table.Rows.Count % 4 == 0) strLab.Text = "/ " + (table.Rows.Count / 4).ToString();
  29. else strLab.Text = "/ " + (table.Rows.Count / 4 + 1).ToString();
  30. Fill();
  31. }
  32. private void Fill()
  33. {
  34. DataTable table = new DataTable();
  35. table = Program.Role.table;
  36. Label[] LB;
  37. PictureBox[] PB;
  38. TableLayoutPanel[] TB;
  39. int q = 0;
  40. LB = new Label[] { label1, label2, label3, label4 };
  41. PB = new PictureBox[] { pic1, pic2, pic3, pic4 };
  42. TB = new TableLayoutPanel[]{ tLP1, tLP2,tLP3,tLP4 };
  43. int n = 4;
  44. pic1.Visible = true;
  45. strLab.Visible = true;
  46. strNum.Visible = true;
  47. for (int i = 0; i < n; i++)
  48. {
  49. if (strNum.Text == strLab.Text.Substring(2))
  50. {
  51. buttonNext.Visible = false;
  52. if (strNum.Text.Equals("1")) buttonBack.Visible = false;
  53. else buttonBack.Visible = true;
  54. if (table.Rows.Count % 4 != 0)
  55. {
  56. if ((table.Rows.Count % 4 <= 3) && (q == 0))
  57. {
  58. tLP4.Visible = false;
  59. n--;
  60. }
  61. if ((table.Rows.Count % 4 <= 2) && (q == 0))
  62. {
  63. tLP3.Visible = false;
  64. n--;
  65. }
  66. if ((table.Rows.Count % 4 <= 1) && (q == 0))
  67. {
  68. tLP2.Visible = false;
  69. n--;
  70. }
  71. if ((table.Rows.Count == 0) && (q == 0))
  72. {
  73. tLP1.Visible = false;
  74. n--;
  75. }
  76. q++;
  77. }
  78. }
  79. else
  80. {
  81. if (strNum.Text.Equals("1")) buttonBack.Visible = false;
  82. else buttonBack.Visible = true;
  83. tLP1.Visible = true;
  84. tLP2.Visible = true;
  85. tLP3.Visible = true;
  86. tLP4.Visible = true;
  87. if (strLab.Text.Equals("/ 1")) buttonNext.Visible = false;
  88. else buttonNext.Visible = true;
  89. }
  90. if (table.Rows.Count != 0)
  91. {
  92. LB[i].Text = table.Rows[Program.Role.id]["Наименование"].ToString() + "\n\n";
  93. if (table.Rows[Program.Role.id]["Скидка"].ToString() != "")
  94. {
  95. LB[i].Text += table.Rows[Program.Role.id]["Стоимость_руб"].ToString();
  96. LB[i].Text += " " + (Convert.ToInt32(table.Rows[Program.Role.id]["Стоимость_руб"]) - (Convert.ToInt32(table.Rows[Program.Role.id]["Стоимость_руб"]) * (Convert.ToDouble(table.Rows[Program.Role.id]["Скидка"])))).ToString();
  97. TB[i].BackColor = Color.LightGreen;
  98. }
  99. else
  100. {
  101. LB[i].Text += table.Rows[Program.Role.id]["Стоимость_руб"].ToString();
  102. TB[i].BackColor = Color.White;
  103. }
  104. LB[i].Text += " рублей за " +
  105. table.Rows[Program.Role.id]["Длительность_мин"].ToString() + " минут \n";
  106. if (table.Rows[Program.Role.id]["Скидка"].ToString() != "")
  107. LB[i].Text += "* скидка " + (Convert.ToDouble(table.Rows[Program.Role.id]["Скидка"]) * 100) + "%";
  108. string img = table.Rows[Program.Role.id]["Изображение"].ToString().Trim();
  109. if ((img == "не указано") || (img == "отсутствует")) PB[i].Image = new Bitmap("products\\net.jpg");
  110. else PB[i].Image = new Bitmap(img);
  111. Program.Role.id++;
  112. }
  113. else
  114. {
  115. if ((table.Rows.Count % 4 <= 3) && (q == 0))
  116. {
  117. tLP4.Visible = false;
  118. n--;
  119. }
  120. if ((table.Rows.Count % 4 <= 2) && (q == 0))
  121. {
  122. tLP3.Visible = false;
  123. n--;
  124. }
  125. if ((table.Rows.Count % 4 <= 1) && (q == 0))
  126. {
  127. tLP2.Visible = false;
  128. n--;
  129. }
  130. if ((table.Rows.Count == 0) && (q == 0))
  131. {
  132. pic1.Visible = false;
  133. label1.Text = "По вашему запросу ничего не найдено";
  134. buttonBack.Visible = false;
  135. buttonNext.Visible = false;
  136. strLab.Visible = false;
  137. strNum.Visible = false;
  138. n--;
  139. }
  140. q++;
  141. break;
  142. }
  143. }
  144. q = 0;
  145. }
  146. private void buttonNextAndBackGrid_Click(object sender, EventArgs e)
  147. {
  148. DataTable table = new DataTable();
  149. string name = (sender as Button).Name;
  150. table = Program.Role.table;
  151. if (name == "buttonBack")
  152. {
  153. if (strNum.Text == strLab.Text.Substring(2))
  154. {
  155. if (table.Rows.Count % 4 == 0) Program.Role.id -= 8; // 4 из 4
  156. if (table.Rows.Count % 4 == 1) Program.Role.id -= 5; // 1 из 4
  157. if (table.Rows.Count % 4 == 2) Program.Role.id -= 6; // 2 из 4
  158. if (table.Rows.Count % 4 == 3) Program.Role.id -= 7; // 3 из 4
  159. }
  160. else
  161. {
  162. Program.Role.id -= 8;
  163. }
  164. tLP1.Visible = true;
  165. tLP2.Visible = true;
  166. tLP3.Visible = true;
  167. tLP4.Visible = true;
  168. strNum.Text = (Convert.ToInt32(strNum.Text) - 1).ToString();
  169. }
  170. else strNum.Text = (Convert.ToInt32(strNum.Text) + 1).ToString();
  171. Fill();
  172. }
  173. private void strNum_KeyDown(object sender, KeyEventArgs e)
  174. {
  175. if (e.KeyCode == Keys.Enter)
  176. {
  177. if ((Convert.ToInt32(strNum.Text) > 0) && (Convert.ToInt32(strNum.Text) <= Convert.ToInt32(strLab.Text.Substring(2))))
  178. {
  179. if (Convert.ToInt32(strNum.Text) >= 4)
  180. {
  181. buttonBack.Visible = true;
  182. }
  183. Program.Role.id = (Convert.ToInt32(strNum.Text) - 1) * 4;
  184. }
  185. else
  186. {
  187. strNum.Text = "1";
  188. Program.Role.id = 0;
  189. MessageBox.Show("Введите число в диапозоне от 0 до " + strLab.Text.Substring(2), "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  190. }
  191. Fill();
  192. }
  193. }
  194. private void Sorts_SelectedIndexChanged(object sender, EventArgs e)
  195. {
  196. DataTable table = new DataTable();
  197. switch (Sorts.Text)
  198. {
  199. case "Цена +":
  200. Program.Role.table.DefaultView.Sort = " Стоимость_руб ASC";
  201. break;
  202. case "Цена -":
  203. Program.Role.table.DefaultView.Sort = " Стоимость_руб DESC";
  204. break;
  205. case "Наименование +":
  206. Program.Role.table.DefaultView.Sort = "Наименование ASC";
  207. break;
  208. case "Наименование -":
  209. Program.Role.table.DefaultView.Sort = "Наименование DESC";
  210. break;
  211. case "Длительность +":
  212. Program.Role.table.DefaultView.Sort = "Длительность_мин ASC";
  213. break;
  214. case "Длительность -":
  215. Program.Role.table.DefaultView.Sort = "Длительность_мин DESC";
  216. break;
  217. }
  218. strNum.Text = "1";
  219. Program.Role.id = 0;
  220. Program.Role.table = Program.Role.table.DefaultView.ToTable(true);
  221. Fill();
  222. }
  223. private void Каталог_FormClosing(object sender, FormClosingEventArgs e)
  224. {
  225. Program.mainf = null;
  226. }
  227. private void textBox1_TextChanged(object sender, EventArgs e)
  228. {
  229. try
  230. {
  231. SqlConnection dbConnection;
  232. Program.conn(out dbConnection);
  233. SqlDataAdapter da = new SqlDataAdapter();
  234. DataTable table = new DataTable();
  235. string strok = textBox1.Text;
  236. strNum.Text = "1";
  237. string SqlText = "select * from Услуги";
  238. if (textBox1.Text != "") SqlText = SqlText + " where (Наименование Like \'%" + strok + "%\' or Стоимость_руб like \'%" + strok +
  239. "%\' or Длительность_мин like \'%" + strok + "%\')";
  240. SqlCommand command = new SqlCommand(SqlText, dbConnection);
  241. da.SelectCommand = command;
  242. da.Fill(table);
  243. Program.Role.table = table;
  244. Program.Role.id = 0;
  245. if (table.Rows.Count % 4 == 0) strLab.Text = "/ " + (table.Rows.Count / 4).ToString();
  246. else strLab.Text = "/ " + (table.Rows.Count / 4 + 1).ToString();
  247. Fill();
  248. }
  249. catch
  250. {
  251. MessageBox.Show("Избегайте символа ' ", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  252. textBox1.Text = "";
  253. }
  254. }
  255. private void label1_Click(object sender, EventArgs e)
  256. {
  257. }
  258. }
  259. }