精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
<add name="connString" connectionString="Data Source=192.168.3.15;Initial Catalog=langtest;Integrated Security=False;User ID=sa;Password=123456" ></add>
思考误区:刚开始一直想的是获取textBox里的内容不是空来判断输入情况,没想用textBox.Text里长度不为零来判断,而且这些输入的查询条件是一个或多个的处理不很清楚。
string swhere = "";
if (textBox_Login.Text.Length > 0)
swhere = "username='" + textBox_Login.Text + "'";
if (textBox_User.Text.Length > 0)
{
if (swhere.Length > 0) swhere += " and ";
swhere += "realname='" + textBox_User.Text + "'";
}
if (swhere.Length == 0)
{
MessageBox.Show("请输入查询条件!");
return;
}
DataTable dt = DBHelper.GetDataSet("select id,username,realname,mobile,email,status,wx_id,qq_id from userbase where login_time is not null and datediff(hh,login_time,getdate())<=2 and login_ip is not null");
写一个查询函数在窗口打开时运行,在刷新事件下调用查询函数,实现刷新当前用户列表。
思考误区:子节点和父节点的相应关系不清楚,思路不清楚,一直在根据代码的意思在做相应的改动,不知道子父节点的一一对应关系。
DataTable dt = new DataTable();
dt = DBHelper.GetDataSet("select PropertyBase.P_ID,PropertyBase.P_Name,WeightBase.W_ID from WeightBase left join PropertyBase on WeightBase.P_ID=PropertyBase.P_ID where T_ID=" + t_ID + " and W_ParentID=0");
data_List.DataSource = dt;
for (int i = 0; i < data_List.Rows.Count; i++)
{
string sid = data_List.Rows[i].Cells["W_ID"].Value.ToString();//表中第i行单元格"W_ID"的数据
DataTable dcount = DBHelper.GetDataSet("select count(*) from WeightBase where W_ParentID=" + sid); //查找W_ID和W_ParentID相等的数据,也就是子节点
DataRow dr = dcount.Rows[0];
if (dr[0].ToString() == "0")//子节点数据为0不存在时继续循环,数据不为0把这行背景色换成Red
continue;
data_List.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
data_List.Columns["W_ID"].Visible = false; //隐藏W_ID列
思考误区:开始直接想在Band_BtnName()函数的判断btn_down.Text属性中直接显示子节点的信息,然后运行发现不能实现点击子节点按钮显示信息的功能,不知道btn的Tag属性,而且知道这个属性以后也不太清楚这个属性的具体用法。
if (dt.Rows[i]["W_Straight"].ToString() == "1" && dt.Rows[i]["W_True"].ToString() == "0" && dt.Rows[i]["W_False"].ToString() == "0" && dt.Rows[i]["W_ParentID"].ToString() != "0")
{
btn_down.Text = dt.Rows[i]["P_Name"].ToString();
btn_down.Tag = dt.Rows[i]["W_ID"].ToString();//利用Tag设置标签,标记W_ID的值
btn_left.Text = True_Name;
btn_right.Text = False_Name;
btn_left.Enabled = false;
btn_right.Enabled = false;
return;
}
在按钮事件中:
Button btn = (Button)sender;// 强制将传递过来的 sender 参数(object)转换成 Button
string sid = (string)btn.Tag;//获取btn的标记
将子节点的数据显示到右方的相应文本框中,封装获取搜索数据函数,通过传递W_ID的值来完成数据的显示。
private void ShowRightDataBySub(string sid)
{
DataTable dtTab = new DataTable();
dtTab = DBHelper.GetDataSet("select * from WeightBase where W_ID=" + sid);
if (dtTab.Rows.Count <= 0)
{
return;
}
w_ID = dtTab.Rows[0]["W_ID"].ToString();
if (Convert.ToBoolean(dtTab.Rows[0]["W_Flg"].ToString()) == false)
{
rdb_No.Checked = true;
}
else
{
rdb_Yes.Checked = true;
GetRangeData();
}
txt_VExplain.Text = dtTab.Rows[0]["W_Explain"].ToString();
cmb_PropertyName.SelectedValue = dtTab.Rows[0]["P_ID"].ToString();
txt_Value.Text = dtTab.Rows[0]["W_Value"].ToString();
txt_Fraction.Text = dtTab.Rows[0]["W_Fraction"].ToString();
}
然后在btn事件中调用:
ShowRightDataBySub(sid);
看书多了解基础知识,工作态度和时间紧迫性,工作的方法:先写出一步步解决问题的具体思路,然后按照思路来一步步的解决问题。