0.个人框架开源起始
来源:互联网 发布:c 能给plc编程吗 编辑:程序博客网 时间:2024/06/06 06:59
目前自己已经开发了一套框架,该套框架支持从数据库读取表结构,然后自动生成SQL语句,并且提供了一整套来执行业务逻辑的关系。
通过 Module、Job、Action三点来确定执行的函数
另外提供了一整套的配置文件自动同步结构。
目前想把这套框架开源,来支持Java、Mac、C++、C#服务器端,并且适用于Web前端开发、Winform开发、WPF、MFC一整套程序。
之所以要开源这套框架,有3个原因:
第一个是想将整套框架整理成熟
第二个是认识更多的人
第三个是想把这套框架推广出去,从而加快中国软件开发的进度
第四个是能够在其中学到很多东西。
报名方式: QQ群: 578129256
svn地址: https://www.yanzuoguang.com/svn/LightFrame
服务器端的XML配置文件:
服务器端的服务实现类:
监控程序:
SQL执行语句的监控:
请求数据:
返回结果:
执行日志:
Cookies信息:
客户端代码:
public partial class FrmHardQuery : Form, IFormQuery
{
private RequestModuleForm m_Module = null;
private FormQueryBase<FrmHardEdit> m_Base = null;
public FrmHardQuery()
{
InitializeComponent();
this.dgv_Query.AutoGenerateColumns = false;
this.m_Module = new RequestModuleForm(this, "System", "System_Hard");
this.m_Base = new FormQueryBase<FrmHardEdit>("硬件", this);
this.InitDrop();
}
#region 页面事件
private void FrmHardQuery_Load(object sender, EventArgs e)
{
this.m_Base.QuerySingle();
}
private void btnQuery_Click(object sender, EventArgs e)
{
this.m_Base.Query();
}
private void bt_Creat_Click(object sender, EventArgs e)
{
this.m_Base.ShowEdit(string.Empty);
}
private void bt_Remove_Click(object sender, EventArgs e)
{
this.m_Base.RemoveSelect();
}
private void tb_HardName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (int)Keys.Enter)
{
this.m_Base.Query();
}
}
private void bt_Use_Click(object sender, EventArgs e)
{
this.m_Base.UpdateSelect("启用", delegate(IDictionary item)
{
item["HardIsEnabled"] = 1;
}, false);
}
private void bt_Unuse_Click(object sender, EventArgs e)
{
this.m_Base.UpdateSelect("停用", delegate(IDictionary item)
{
if (StringHelper.SafeCompare(item["HardID"], GlobleConfig.HardInfo.HardID, true))
{
throw PiaostException.Create(0, "不能禁用本机设备");
}
item["HardIsEnabled"] = 0;
}, false);
}
private void cb_Position_SelectedIndexChanged(object sender, EventArgs e)
{
this.m_Base.Query();
}
private void cb_PositionType_SelectedIndexChanged(object sender, EventArgs e)
{
this.Bind();
this.m_Base.Query();
}
private void dgv_Query_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
this.m_Base.EditDgvIndex(e.RowIndex);
}
#endregion
#region 实现接口
public RequestModuleForm Module
{
get { return this.m_Module; }
}
public object DgvResult
{
get { return this.dgv_Query; }
}
public IPageSizeControl PageControl
{
get { return this.pg_Size; }
}
public object GetQueryCondtion()
{
Dictionary<string, object> dic = new Dictionary<string, object>();
dic["HardName_Search"] = this.tb_HardKey.Text;
dic["HardTypeID"] = this.cb_HardType.SelectedValue;
dic["ScenicProjectID"] = this.cb_Project.SelectedValue;
dic["PositionTypeID"] = this.cb_PositionType.SelectedValue;
dic["HardPosition"] = this.cb_PositionMeanType.SelectedValue;
dic["HardIsEnabled"] = this.cb_SystemIsLock.SelectedValue;
return dic;
}
public string KeyField
{
get { return "HardID"; }
}
#endregion
#region 初始化下拉
public void InitDrop()
{
this.m_Base.CondtionInit(delegate()
{
ControlHelper.BindDrop(cb_PositionMeanType, DropData.Get("PositionMeanType"), "Text", "Value", "-出入口-");
ControlHelper.BindDrop(cb_SystemIsLock, DropData.Get("SystemIsEnabled"), "Text", "Value", "-状态-");
ControlHelper.BindDrop(Col_Position, DropData.Get("PositionMeanType"), "Text", "Value");
ControlHelper.BindDrop(Col_HardIsManagerCard, DropData.Get("HardIsManagerCard"), "Text", "Value");
});
this.m_Module.AddInit(delegate()
{
List<ReturnDataSet> rsList = this.m_Module.Request<ReturnDataSet>(new List<RequestData>()
{
new RequestData(){
Module = this.m_Module.Module,
Job = "System_HardType",
Action = "Query"
},
new RequestData(){
Module = "Scenic",
Job = "Scenic_Project",
Action = "Query"
},
new RequestData(){
Module = this.m_Module.Module,
Job = "System_PositionType",
Action = "Query"
}
});
this.m_Base.CondtionInit(delegate()
{
ControlHelper.BindDrop(cb_HardType, rsList[0].GetTable(0), "HardTypeName", "HardTypeID", "-硬件类型-");
ControlHelper.BindDrop(cb_Project, rsList[1].GetTable(0), "ProjectName", "ProjectID", "-服务项目-");
ControlHelper.BindDrop(cb_PositionType, rsList[2].GetTable(0), "PositionTypeName", "PositionTypeID", "-服务区域-");
Bind();
});
});
}
private void Bind()
{
object vValue = this.cb_Project.SelectedValue;
DataTable vTable = this.cb_PositionType.DataSource as DataTable;
if (vTable == null)
{
return;
}
RowHelper.AddColumn(vTable, "ScenicProjectID");
string vFitler = StringHelper.IsEmpty(vValue) ? string.Empty : string.Format("ScenicProjectID='{0}' OR ScenicProjectID IS NULL", vValue);
vTable.DefaultView.RowFilter = vFitler;
}
#endregion
private void dgv_Query_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == this.Col_Operation.Index)
{
DataRow vRow = (this.dgv_Query.DataSource as DataTable).Rows[e.RowIndex];
FrmHardLoad vForm = new FrmHardLoad(vRow);
FormOpen.Open(vForm, vForm.Text);
}
}
WPF代码以及图片
/// <summary>
/// FrmOrderQuery.xaml 的交互逻辑
/// </summary>
public partial class FrmOrderQuery : UserControl, IFormQuery
{
private RequestModuleForm m_Module = null;
private FormQueryBase<FrmOrderLoad> m_Base = null;
private ScanData m_Scan = null;
public FrmOrderQuery()
{
InitializeComponent();
this.m_Module = new RequestModuleForm(this, "Order", "Order_Order");
this.m_Base = new FormQueryBase<FrmOrderLoad>("订单", this);
this.InitDrop();
}
private void WPFQuikeDay_DateChanged()
{
this.m_Base.CondtionInit(delegate()
{
this.dtp_DateFrom.SelectedDate = this.pqd_Day.DateFrom;
this.dtp_DateTo.SelectedDate = this.pqd_Day.DateTo;
});
this.m_Base.Query();
}
private void OnScan(ScanData data)
{
this.m_Scan = data;
this.m_Module.Invoke(delegate()
{
this.m_Base.Query();
});
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
ScanHandle.Add(this, this.OnScan);
this.m_Base.QuerySingle();
}
private void bt_Search_Click(object sender, RoutedEventArgs e)
{
this.m_Base.Query();
}
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
this.m_Base.Query();
}
private void dtp_DateFrom_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
this.m_Base.Query();
}
private void tb_OrderNo_KeyDown(object sender, KeyEventArgs e)
{
this.m_Base.QueryEnterWPF(e);
}
#region 实现接口
public string KeyField
{
get { return "OrderID"; }
}
public RequestModuleForm Module
{
get { return this.m_Module; }
}
public object DgvResult
{
get { return this.dgv_Query; }
}
public IPageSizeControl PageControl
{
get { return this.pg_Size; }
}
public object GetQueryCondtion()
{
Dictionary<string, object> vDic = new Dictionary<string, object>();
if (this.m_Scan != null)
{
vDic["RelationFromType"] = EnumType.GetFromType(this.m_Scan.ReadType);
vDic["RelationFromNo"] = this.m_Scan.Content;
this.m_Scan = null;
}
else
{
vDic["OrderFromType_In"] = new List<int> { 0, 2 }; //只查询本地票
vDic["OrderMegerType"] = this.cb_OrderMegerType.SelectedValue;
vDic["ScenicDiscountID"] = this.cb_Discount.SelectedValue;
vDic["OrderPrintType"] = this.cb_PrintType.SelectedValue;
vDic["CreateHardID"] = this.cb_Hard.SelectedValue;
vDic["CodeStatus"] = this.cb_CodeStatus.SelectedValue;
vDic["OrderLike"] = this.tb_OrderNo.Text;
bool isQuerySingle = false; //是否查询单条数据,通过二维码查询
if (!string.IsNullOrEmpty(this.tb_OrderNo.Text))
{
isQuerySingle = true;
}
if (this.dtp_DateFrom.SelectedDate != null
&& this.dtp_DateTo.SelectedDate != null
&& this.dtp_DateFrom.SelectedDate.Value > this.dtp_DateTo.SelectedDate.Value)
{
throw PiaostException.Create("开始时间不能大于结束时间");
}
if (!GlobleConfig.IsAllData && !isQuerySingle)
{
vDic["CreateUserID"] = GlobleConfig.UserInfo.UserID;
}
vDic["CreateDate_From"] = StringHelper.GetDay(this.dtp_DateFrom.SelectedDate);
vDic["CreateDate_To"] = StringHelper.GetDayTo(this.dtp_DateTo.SelectedDate);
}
return vDic;
}
#endregion
#region 初始化下拉
public void InitDrop()
{
this.m_Base.CondtionInit(delegate()
{
this.dtp_DateFrom.SelectedDate = DateTime.Today;
this.dtp_DateTo.SelectedDate = DateTime.Today;
//this.dtp_DateFrom.ValueX = null;
//this.dtp_DateTo.ValueX = null;
ControlHelper.BindDrop(cb_OrderMegerType, DropData.Get("OrderMegerType"), "Text", "Value", "-门票类型-");
ControlHelper.BindDrop(cb_PrintType, DropData.Get("PrintType"), "Text", "Value", "-游客类型-");
ControlHelper.BindDrop(cb_CodeStatus, DropData.Get("CodeStatus"), "Text", "Value", "-订单状态-");
});
this.m_Module.AddInit(delegate()
{
List<ReturnDataSet> rList = this.m_Module.Request<ReturnDataSet>(new List<RequestData>()
{
new RequestData()
{
Module = "System",
Job = "System_Hard",
Action = "Query",
Data = new Dictionary<string,object>(){
{ "HardTypeKey" , "Computer" }
}
},
new RequestData(){
Module="Scenic",
Job="Scenic_Discount",
Action="Query"
}
});
this.m_Base.CondtionInit(delegate()
{
ControlHelper.BindDrop(cb_Hard, rList[0].GetTable(0), "HardName", "HardID", "-下单窗口-");
ControlHelper.BindDrop(cb_Discount, rList[1].GetTable(0), "DiscountName", "DiscountID", "-票种-");
});
});
}
#endregion
private void lnk_ProductName_Click(object sender, RoutedEventArgs e)
{
this.m_Module.Execute(delegate()
{
DataRow vRow = this.m_Base.GetRow(e);
OrderInfo vInfo = ObjectHelper.Convert<OrderInfo>(vRow);
if (vInfo.OrderFromType == OrderFromType.Distributor || vInfo.OrderFromType == OrderFromType.Net)
{
throw PiaostException.Create("网络票不能查看产品信息");
}
string vProductID = RowHelper.GetString(vRow, "ScenicProductID");
PF.Scenic.FrmProductLoad frm = new PF.Scenic.FrmProductLoad();
frm.LoadData(vProductID);
this.m_Base.ShowForm(frm);
});
}
}
- 0.个人框架开源起始
- Android 个人总结开源框架
- 发布个人开源框架到CocoaPods
- Android YapHttp开源个人轻量级网络框架
- 个人开源项目cuteRecorder---录音框架的使用
- 起始
- 起始
- 起始
- 起始
- 起始
- 个人开源框架[对象属性自定义复制/快速操作文件/属性读取表达式]
- 【个人收藏】Direct UI 与一个简单的开源DIRECTUI界面框架
- 个人收藏的一些 Android 好的开源框架和资源
- Android网络请求框架第一弹——起始篇
- java框架个人理解
- ssh框架个人总结
- Volley框架个人心得体会
- Bootstrap框架个人总结
- Dialog设置背景透明无效,在安卓5.0系统上无效解决方法!
- 【排序】冒泡排序
- AndroidStudio Git的使用(主要是解决文件冲突)
- windows编译hadoop 2.x Hadoop-eclipse-plugin插件
- Linux Bash Shell入门教程
- 0.个人框架开源起始
- strcpy函数实现的几种方式
- xml与java实体相互转化
- Apache 配置多个虚拟主机
- 选择排序+for的增强版输出
- Oracle高级查询
- 【华为 OJ模拟】将3x3二维数组的右上半元素全部置为0
- 使用Netty搭建APP推送服务器
- hdu 1505 City Game