// 数据库命令的维护 - 打开数据集 public bool rsOpen(ref System.Data.DataSet dst, string pSQL) { bool blnResult; // if (dst == null) { dst = new System.Data.DataSet(); } // 清控原来的数据 dst.Clear(); if (dst.Tables.Count > 0) { dst.Tables[0].Columns.Clear(); } try { // del 2002-12-18 //this.DisConnect(); // endd // 连接 if (blnResult = Connect()) { // 填充数据 new System.Data.SqlClient.SqlDataAdapter(pSQL, this.Connection).Fill(dst); blnResult = dst.Tables.Count > 0; } } catch (System.Exception ee) { blnResult = false; if (this.Debug) { U_Pub_Zwd.ErrorMessage("数据集打开错误:" + ee.Message); } } finally { // 断开 // del 2002-12-18 //DisConnect(); // endd } return(blnResult); }
// rsBindTree, rsBindTreeEx // 绑定 TreeView // dst 的结构: // 冗余的分组结构(不用 Group By, 用重复表示分组),并且按分组排序,Levels 指定分组数(即层数) // ImageIndex 是用分号分割的一个字串,每个元素代表一个图标索引 public bool rsBindTree(ref System.Data.DataSet dst, string pSQL, System.Windows.Forms.TreeView tvw , int Levels, string ImageIndex) { if ((dst == null && pSQL == "") || tvw == null) { return(false); } if (pSQL != "") { rsOpen(ref dst, pSQL); } return(U_Pub_Zwd.rsBindTree(dst, tvw, Levels, ImageIndex)); }
// 绑定 ListView // HideColumns 以分号分割的隐藏列号组合 public bool rsBindList(ref System.Data.DataSet dst, string pSQL, System.Windows.Forms.ListView lvw , int ImageIndex, string HideColumns, int SortColumn) { if ((dst == null && pSQL == "") || lvw == null) { return(false); } if (pSQL != "") { rsOpen(ref dst, pSQL); } return(U_Pub_Zwd.rsBindList(dst.Tables[0], lvw, ImageIndex, HideColumns, SortColumn)); }
// 数据库命令的维护 - 执行命令 public bool SQLExecute(string pSQL) { bool blnResult; System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(pSQL, this.Connection); // add 2003-06-05 cmd.CommandTimeout = 300; // enda try { // del 2002-12-18 //this.DisConnect(); // endd // 连接 if (blnResult = Connect()) { // 执行 cmd.ExecuteNonQuery(); } } catch (System.Exception ee) { blnResult = false; if (this.Debug) { U_Pub_Zwd.ErrorMessage("数据库命令错误:" + ee.Message); } } finally { // 断开 // del 2002-12-18 //DisConnect(); // endd } return(blnResult); }
// 数据库连接的维护 - 打开连接 public bool Connect() { if (!Connected) { try { Connection.ConnectionString = strConnection; Connection.Open(); Connected = (Connection.State == System.Data.ConnectionState.Open); } catch (System.Exception ee) { Connected = false; if (this.Debug) { U_Pub_Zwd.ErrorMessage("数据库连接错误:" + ee.Message); } } } return(Connected); }
// 绑定 ListView // HideColumns 以分号分割的隐藏列号组合 static public bool rsBindList(System.Data.DataTable dt, System.Windows.Forms.ListView lvw , int ImageIndex, string HideColumns) { int intWidth = 0, intWidths = 0, intMax = 0, intWidth2 = 0; if (dt == null || lvw == null) { return(false); } lvw.ListViewItemSorter = null; // del 2002-12-13 //lvw.Sorting = System.Windows.Forms.SortOrder.Ascending; // endd lvw.Clear(); System.Windows.Forms.ListViewItem li; // 增加表头 int intCols = dt.Columns.Count; for (int intCol = 0; intCol < intCols; intCol++) { if (U_Pub_Zwd.IsIn(intCol.ToString(), HideColumns)) { intWidth = 0; } else if (intCol == 0) { intWidth2 = (intWidth = 300); intMax = intCol; } else { intWidth2 = (intWidth = 100); intMax = intCol; } lvw.Columns.Add(dt.Columns[intCol].ColumnName, intWidth, System.Windows.Forms.HorizontalAlignment.Left); intWidths += intWidth; } // move 2003-04-25 /* * intWidth = lvw.ClientSize.Width - intWidths + intWidth2 - 16; * if(intWidth > 0) * lvw.Columns[intMax].Width = intWidth; */ // endm => // 增加数据 int intRows = dt.Rows.Count; for (int intRow = 0; intRow < intRows; intRow++) { if (dt.Rows[intRow].RowState == System.Data.DataRowState.Deleted) { continue; } li = lvw.Items.Add(dt.Rows[intRow][0].ToString()); li.ImageIndex = ImageIndex; for (int intCol = 1; intCol < intCols; intCol++) { li.SubItems.Add(dt.Rows[intRow][intCol].ToString()); } } // => move 2003-04-25 intWidth = lvw.ClientSize.Width - intWidths + intWidth2; if (intWidth > 0) { lvw.Columns[intMax].Width = intWidth; } // endm return(true); }
// Row 作为全局的行指针 static private bool rsBindTreeEx(System.Data.DataSet dst, System.Windows.Forms.TreeNode tn , ref int Row, int Rows, int Col, int Levels, string ImageIndex) { bool b; string s; if (Col == Levels) { return(true); } while (Row < Rows) { // 检查分组 Col(Col<Levels) 的重复性,如果全部重复,表示该行仍在该组,否则转下一组 System.Windows.Forms.TreeNode t = tn; b = true; for (int i = Col; i > 0; i--) { if (!(b = (t.Text == U_Pub_Zwd.GetFirstString(dst.Tables[0].Rows[Row][i - 1].ToString(), "-")))) { break; } t = t.Parent; } if (!b) { // 返回上一级 return(false); } else { try { s = dst.Tables[0].Rows[Row][Col].ToString(); } catch { s = ""; } if (s.Length > 0) { // 增加该节点 t = tn.Nodes.Add(U_Pub_Zwd.GetFirstString(s, "-")); t.Tag = U_Pub_Zwd.GetLastString(s, "-"); t.ImageIndex = (t.SelectedImageIndex = System.Convert.ToInt16(ImageIndex.Split(';')[Col])); // 进入下一级 if (Col + 1 < Levels) { // 返回上一级 if (!rsBindTreeEx(dst, t, ref Row, Rows, Col + 1, Levels, ImageIndex)) { Row--; } } } } Row++; } return(true); }