项目中的精华功能讲解:相信大家都用过CSDN 中结贴的功能吧(弹出的小黄窗体)
2008-04-29 17:32
323 查看
相信大家都用过CSDN 中结贴的功能吧(弹出的小黄窗体)
如下图所示:
这个功能可以大家有时在项目中也要用到,我项目中就用到过
具体实现:
前台:
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%...@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">...
<!--
//如CSDN一样的提示层
function wfsr(txt)...{
event.cancelBubble=true
oStr= "<div id='tip' style='position:absolute;border:1px solid #000000;background-color:#ff8080;font-size:9pt;color:#FFFFFF;;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=0,OffY=0,Color=gray,Positive=true);display:none'></div>";
if(typeof(tip)=="undefined")
document.body.insertAdjacentHTML("BeforeEnd",oStr)
tip.innerHTML="分配总金额:"+Number(document.getElementById("lbBUDGT02").value) + "<br/>你目前可分配金额:"+ (Number(document.getElementById("lbBUDGT02").value)-Number(document.getElementById("lbVal02").value));
tip.style.top=event.clientY+10
tip.style.left=event.clientX+10
tip.style.display=''
}
document.onclick=function()...{
if(typeof(tip)!=="undefined"&&event.srcElement.id!="tip"&&event.srcElement.parentElement.id!='tip')
tip.style.display="none"
}
function myPosition(obj)...{
var t = obj.offsetTop,l = obj.offsetLeft;
while (obj= obj.offsetParent)...{
t += obj.offsetTop;
l += obj.offsetLeft;
}
alert(t);
alert(l);
}
function clearNoNum(obj)
...{
//先把非数字的都替换掉,除了数字和.
obj.value = obj.value.replace(/[^d.]/g,"");
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^./g,"");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/....{2,}/g,".");
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace(".","$#$").replace(/./g,"").replace("$#$",".");
}
function chkN(str)
...{
if(/D/.test(str.value))...{alert('只能输入数字');str.value='0.00';}
}
function setVal02(obj)
...{
document.getElementById("lbVal02").innerText="";
var sum = 0;
var txts = document.getElementById('<%=objGridView.ClientID%>').getElementsByTagName("INPUT");
for(var i=0;i<txts.length;i++)
...{
if(txts[i].type=="text")
...{
sum += Number(txts[i].value);
document.getElementById("lbVal02").value = sum;
}
}
}
function Chk_BUDGT02BUDGT03()
...{
var budgt03 = document.getElementById("lbVal02").value;
var budgt02 = document.getElementById("lbBUDGT02").value;
if(Number(budgt03)>Number(budgt02))
...{
alert("分配额总和"+budgt03+"不能大于可分配额"+budgt02 +",请重输检查输入");//给于提示
return false;
}
}
//-->
</script>
<link href="../Css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: center">
<table style="width: 100%" align="center" border="1" cellspacing="0" rules="rows">
<tr>
<td colspan="5" align="left">
当前位置:<asp:Label ID="lbPosition" runat="server" Text="Label"></asp:Label>
<asp:DropDownList ID="ddlBonus" runat="server" OnSelectedIndexChanged="ddlBonus_SelectedIndexChanged" AutoPostBack="True">
</asp:DropDownList></td>
</tr>
<tr>
<td colspan="5">
<asp:Label ID="lbddlBonusText" runat="server" Text="Label"></asp:Label>表<br />
<div style="display:none">(<asp:Label ID="lbYear" runat="server" Text="Label"></asp:Label>年<asp:Label ID="lbReason"
runat="server" Text="Label"></asp:Label>季)</div></td>
</tr>
<tr>
<td style="width: 100px; height: 23px;">部门:<asp:Label ID="lbSText" runat="server" Text='<%#strLbSTEXT %>'></asp:Label></td>
<td style="height: 23px;" colspan="3">
(上次结余:<asp:Label
ID="lbBUDGT" runat="server" Text="Label"></asp:Label>
|| 本部门总额:<asp:Label ID="lbBUDGT01" runat="server" Text="Label"></asp:Label>)<asp:TextBox
ID="lbBUDGT02" runat="server"></asp:TextBox></td>
<td style="width: 100px; height: 23px;">
</td>
</tr>
<tr>
<td colspan="5">
<asp:GridView ID="objGridView" runat="server" Width="100%" AutoGenerateColumns="False" OnRowDataBound="objGridView_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<asp:Label ID="lbID" runat="server" Text='<%#Container.DataItemIndex+1%>'></asp:Label>
</ItemTemplate>
<HeaderStyle Width="48px" />
<ItemStyle Width="48px" />
</asp:TemplateField>
<asp:BoundField DataField="SNAME" HeaderText="姓名" >
<HeaderStyle Width="50%" />
<ItemStyle Width="50%" />
</asp:BoundField>
<asp:BoundField DataField="KQXS" HeaderText="季度缺勤信息" HtmlEncode="False" >
<HeaderStyle Width="12%" />
<ItemStyle Width="12%" />
</asp:BoundField>
<asp:BoundField DataField="VAL01" HeaderText="标准绩效工资" HtmlEncode="False" >
<HeaderStyle Width="12%" />
<ItemStyle Width="12%" />
</asp:BoundField>
<asp:TemplateField HeaderText="二次分配额">
<EditItemTemplate>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("VAL02") %>' style="display:none;"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("VAL02") %>' Width="100px" onmouseout="tip.style.display='none';" onmouseover='wfsr(this);this.select();this.focus();' onclick="wfsr(this);this.select();this.focus();" onchange="setVal02(this);"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td style="width: 100px; height: 23px;">
合计:</td>
<td style="width: 100px; height: 23px;">
</td>
<td style="width: 100px; height: 23px;">
</td>
<td style="width: 100px; height: 23px;">
</td>
<td style="width: 100px; height: 23px;">
<asp:TextBox ID="lbVal02" style="border:0px" ReadOnly="true" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td colspan="5" style="height: 23px">
<hr color="#bed6ff" noshade="noshade" />
<asp:GridView ID="objForm" runat="server" Width="100%" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="SNAME2" HeaderText="人力资源审核人">
<HeaderStyle Width="30%" />
<ItemStyle Width="30%" />
</asp:BoundField>
<asp:BoundField DataField="ADVISE" HeaderText="审核意见" />
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td colspan="5" style="height: 69px">
<hr color="#b6d3f1" noshade="noshade" />
<table>
<tr>
<td style="height: 26px"><asp:Button ID="btnSave" runat="server" Text="保 存" OnClick="btnSave_Click" OnClientClick="return Chk_BUDGT02BUDGT03();"/>
<asp:Button ID="btnOK" runat="server" Text="提 交" OnClick="btnOK_Click" OnClientClick="return confirm('是否发起流程');"/>
<asp:Button ID="btnCancel" runat="server" Text="取 消"/></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
后台:
//*******************************************************
//*版本:V0.1
//*作者:wyj
//*时间:2008-4-24
//*修改时间:
//*******************************************************
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ChamcDoc.HRUser;
using ChamcDoc.HR;
public partial class _Default : System.Web.UI.Page
...{
public string strORGEH = "50000013"; //CurrUser.getCurrUser().DeptID;//这个是经理登陆传过来的部门ID号 触发点(测试点:50000013)
public string strCTYPE = "BON01"; //这个也是传入的是季度还是年终(BON01/BON02)
protected string strWhere = ""; //传入的条件
public string strLbSTEXT = ""; //部门名称
public string strDEPID = "";
public string strPosition = "部门经理填写本部门奖金分配";//当前位置
public string strLbBUDGT = ""; //上次结余
public string strLbBUDGT01 = ""; //本部门总额
public string strLbBUDGT02 = "";
public string strLbBUDGT03 = "";
DataSet ds_Emp = new DataSet(); //员工奖金记录信息
DataSet ds_Dep = new DataSet(); //员工部门记录信息
public decimal sum_val01 = 0.00m; //标准绩效工资合计
public decimal sum_val02 = 0.00m; //二次分配合计
protected void Page_Load(object sender, EventArgs e)
...{
if (!IsPostBack)
...{
GetDepDataList(strORGEH);
strCTYPE = this.ddlBonus.SelectedValue.ToString(); //给出列表初始选中状态
ViewState["CTYPE"] = (object)strCTYPE;
GetDepBonusData_DEP(strORGEH,strCTYPE);
onInit(strORGEH, strCTYPE);
GetDepBonusData_EMP(strORGEH,strCTYPE);
}
}
//得到各部门奖金分配员工列表数据
private void GetDepBonusData_EMP(string strORGEH,string CTYPE)
...{
strWhere = " ORGEH = " + strORGEH +" and CTYPE = '" + CTYPE + "'";
ds_Emp = HRBonusEmpList.Instance.GetList(strWhere);
this.objGridView.DataSource = ds_Emp.Tables[0].DefaultView;
objGridView.DataKeyNames = new string[] ...{ "ID" };//主键(注意DataKeyNames 是复数间接告诉我们这里是可以有多个字段即可以是联合主键)
this.objGridView.DataBind();
}
//得到各部门奖金分配部门列表数据
private void GetDepBonusData_DEP(string strORGEH,string CTYPE)
...{
strWhere = " ORGEH = " + strORGEH + " and CTYPE = '" + CTYPE + "'";
ds_Dep = HRBonusDepList.Instance.GetList(strWhere);
if (ds_Dep.Tables[0].Rows.Count > 0)
...{
strDEPID = ds_Dep.Tables[0].Rows[0]["ID"].ToString(); //部门
this.lbSText.Text = ds_Dep.Tables[0].Rows[0]["STEXT"].ToString(); //部门
this.lbBUDGT.Text = ds_Dep.Tables[0].Rows[0]["BUDGT"].ToString(); //上次结余
this.lbBUDGT01.Text = ds_Dep.Tables[0].Rows[0]["BUDGT01"].ToString(); //本部门总额
this.lbBUDGT02.Text = ds_Dep.Tables[0].Rows[0]["BUDGT02"].ToString(); //总计
strLbBUDGT02 = ds_Dep.Tables[0].Rows[0]["BUDGT02"].ToString();
strLbBUDGT03 = ds_Dep.Tables[0].Rows[0]["BUDGT03"].ToString();
ViewState["strLbBUDGT02"] = (object)strLbBUDGT02;
ViewState["strLbBUDGT03"] = (object)strLbBUDGT03;
ViewState["strDEPID"] = (object)strDEPID;
}
}
//得到所有要分配金额的列表
private void GetDepDataList(string strORGEH)
...{
DataSet ds = new DataSet();
strWhere = " ORGEH = '" + strORGEH + "' and ID not in (select DEPID from BOUNSWF_PROCESS where MARK = 3 or MARK = 1)";
ds = HRBonusDepList.Instance.GetList_YEREDEP(strWhere);
if (ds.Tables[0].Rows.Count > 0)
...{
this.ddlBonus.DataSource = ds;
ddlBonus.DataTextField = "Flag";
ddlBonus.DataValueField = "CTYPE";
ddlBonus.DataBind();
}
}
/**//// <summary>
/// 做合计,显示字体标识等
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void objGridView_RowDataBound(object sender, GridViewRowEventArgs e)
...{
if (e.Row.RowType == DataControlRowType.DataRow)
...{
Label lbVal02 = (Label)e.Row.Cells[4].FindControl("Label1") as Label;
if (e.Row.RowIndex >= 0)
...{
sum_val01 += Convert.ToDecimal(e.Row.Cells[3].Text);
if (lbVal02.Text != "")
...{
sum_val02 += Convert.ToDecimal(lbVal02.Text);
}
}
}
//合计统计
this.lbVal02.Text = sum_val02.ToString("0.00");
}
/**//// <summary>
/// 保存数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
...{
for (int i = 0; i < objGridView.Rows.Count; i++)
...{
TextBox txt_val02 = objGridView.Rows[i].Cells[4].FindControl("TextBox1") as TextBox;
HRBonusEmpList.Instance.CTYPE = ViewState["CTYPE"].ToString();
HRBonusEmpList.Instance.ORGEH = strORGEH.ToString();
HRBonusEmpList.Instance.VAL02 = Convert.ToDecimal(txt_val02.Text); //分配金额
HRBonusDepList.Instance.BUDGT02 = Convert.ToDecimal(ViewState["strLbBUDGT02"].ToString());
HRBonusDepList.Instance.BUDGT03 = Convert.ToDecimal(this.lbVal02.Text);
HRBonusEmpList.Instance.ID = Convert.ToInt32(objGridView.DataKeys[i].Value); //员工ID
CreateProcess(0);
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('数据保存成功!')</script>");
}
}
private void CreateProcess(int P_Mark)
...{
HRBonusDepList.Instance.ID = Convert.ToInt32(ViewState["strDEPID"].ToString()); //部门ID
if (P_Mark == 1)
...{
WFProcess.Instance.PROCESSNAME = this.ddlBonus.SelectedItem.Text;
WFProcess.Instance.PROCESSMEMO = this.ddlBonus.SelectedItem.Text;
WFProcess.Instance.SNAME1 = "登陆者";//登陆者
WFProcess.Instance.BEGTIME = System.DateTime.Now;//当前时间
WFProcess.Instance.MARK = 1; //开始流程
}
else
...{
WFProcess.Instance.PROCESSNAME = this.ddlBonus.SelectedItem.Text;
WFProcess.Instance.PROCESSMEMO = this.ddlBonus.SelectedItem.Text;
WFProcess.Instance.SNAME1 = "登陆者";//登陆者
WFProcess.Instance.BEGTIME = System.DateTime.Now;//当前时间
WFProcess.Instance.MARK = 1; //开始流程
}
HRBonusEmpList.Instance.Update(P_Mark); //保存上次所分配的金额值
}
/**//// <summary>
/// 提交数据开始生成流程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOK_Click(object sender, EventArgs e)
...{
for (int i = 0; i < objGridView.Rows.Count; i++)
...{
TextBox txt_val02 = objGridView.Rows[i].Cells[4].FindControl("TextBox1") as TextBox;
HRBonusEmpList.Instance.CTYPE = ViewState["CTYPE"].ToString();
HRBonusEmpList.Instance.ORGEH = strORGEH.ToString();
HRBonusEmpList.Instance.VAL02 = Convert.ToDecimal(txt_val02.Text); //分配金额
HRBonusDepList.Instance.BUDGT02 = Convert.ToDecimal(ViewState["strLbBUDGT02"].ToString());
HRBonusDepList.Instance.BUDGT03 = Convert.ToDecimal(this.lbVal02.Text);
HRBonusEmpList.Instance.ID = Convert.ToInt32(objGridView.DataKeys[i].Value); //员工ID
}
CreateProcess(1);
Response.Redirect("HRManageAudt.aspx");
}
/**//// <summary>
/// 生成5位随机数
/// </summary>
/// <returns></returns>
private string CreateRandom()
...{
Random ran = new Random(unchecked((int)DateTime.Now.Ticks));
int num = ran.Next(0, 9999) + 10000;
return num.ToString();
}
/**//// <summary>
/// 下拉列表框改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlBonus_SelectedIndexChanged(object sender, EventArgs e)
...{
strCTYPE = this.ddlBonus.SelectedValue.ToString();
ViewState["CTYPE"] = (object)strCTYPE;
strLbBUDGT02 = ViewState["strLbBUDGT02"].ToString();
GetDepBonusData_EMP(strORGEH, strCTYPE);
GetDepBonusData_DEP(strORGEH, strCTYPE);
onInit(strORGEH, strCTYPE);
}
//这里主要做页面初始化工作
private void onInit(string strORGEH, string CTYPE)
...{
if (this.ddlBonus.Items.Count > 0)
...{
if (this.ddlBonus.SelectedItem.Value == "BON01")//当选中的是季度奖金分配
...{
this.lbddlBonusText.Text = this.ddlBonus.SelectedItem.Text;
}
else if (this.ddlBonus.SelectedItem.Value == "BON02") //当选中的年度奖金分配
...{
this.lbddlBonusText.Text = this.ddlBonus.SelectedItem.Text;
}
}
strWhere = " Mark = 2 and DepID = (select ID from HRBONUS_DEPLIST where ORGEH = " + strORGEH + " and CTYPE = '" + CTYPE + "')";
if (WFProcess.Instance.Exit(strWhere) > 0) //有返回的
...{
this.objForm.Visible = true;
this.lbPosition.Text = "部门经理修改返回本部门奖金分配";//当前位置
strWhere = " ProcessID = (select ProcessID from BOUNSWF_Process where Mark=2 and DepID = (select ID from HRBONUS_DEPLIST where ORGEH = " + strORGEH + " and CTYPE = '" + CTYPE + "'))";
DataSet ds = WFForm.Instance.GetList(strWhere);
if (ds.Tables[0].Rows.Count > 0)
...{
this.objForm.DataSource = ds.Tables[0].DefaultView;
this.objForm.DataBind();
}
}
else
...{
this.lbPosition.Text = strPosition;//当前位置
this.objForm.Visible = false;
}
}
}
做得不好,只想给大家提个思路
如下图所示:
这个功能可以大家有时在项目中也要用到,我项目中就用到过
具体实现:
前台:
<%...@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%...@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">...
<!--
//如CSDN一样的提示层
function wfsr(txt)...{
event.cancelBubble=true
oStr= "<div id='tip' style='position:absolute;border:1px solid #000000;background-color:#ff8080;font-size:9pt;color:#FFFFFF;;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=0,OffY=0,Color=gray,Positive=true);display:none'></div>";
if(typeof(tip)=="undefined")
document.body.insertAdjacentHTML("BeforeEnd",oStr)
tip.innerHTML="分配总金额:"+Number(document.getElementById("lbBUDGT02").value) + "<br/>你目前可分配金额:"+ (Number(document.getElementById("lbBUDGT02").value)-Number(document.getElementById("lbVal02").value));
tip.style.top=event.clientY+10
tip.style.left=event.clientX+10
tip.style.display=''
}
document.onclick=function()...{
if(typeof(tip)!=="undefined"&&event.srcElement.id!="tip"&&event.srcElement.parentElement.id!='tip')
tip.style.display="none"
}
function myPosition(obj)...{
var t = obj.offsetTop,l = obj.offsetLeft;
while (obj= obj.offsetParent)...{
t += obj.offsetTop;
l += obj.offsetLeft;
}
alert(t);
alert(l);
}
function clearNoNum(obj)
...{
//先把非数字的都替换掉,除了数字和.
obj.value = obj.value.replace(/[^d.]/g,"");
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^./g,"");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/....{2,}/g,".");
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace(".","$#$").replace(/./g,"").replace("$#$",".");
}
function chkN(str)
...{
if(/D/.test(str.value))...{alert('只能输入数字');str.value='0.00';}
}
function setVal02(obj)
...{
document.getElementById("lbVal02").innerText="";
var sum = 0;
var txts = document.getElementById('<%=objGridView.ClientID%>').getElementsByTagName("INPUT");
for(var i=0;i<txts.length;i++)
...{
if(txts[i].type=="text")
...{
sum += Number(txts[i].value);
document.getElementById("lbVal02").value = sum;
}
}
}
function Chk_BUDGT02BUDGT03()
...{
var budgt03 = document.getElementById("lbVal02").value;
var budgt02 = document.getElementById("lbBUDGT02").value;
if(Number(budgt03)>Number(budgt02))
...{
alert("分配额总和"+budgt03+"不能大于可分配额"+budgt02 +",请重输检查输入");//给于提示
return false;
}
}
//-->
</script>
<link href="../Css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: center">
<table style="width: 100%" align="center" border="1" cellspacing="0" rules="rows">
<tr>
<td colspan="5" align="left">
当前位置:<asp:Label ID="lbPosition" runat="server" Text="Label"></asp:Label>
<asp:DropDownList ID="ddlBonus" runat="server" OnSelectedIndexChanged="ddlBonus_SelectedIndexChanged" AutoPostBack="True">
</asp:DropDownList></td>
</tr>
<tr>
<td colspan="5">
<asp:Label ID="lbddlBonusText" runat="server" Text="Label"></asp:Label>表<br />
<div style="display:none">(<asp:Label ID="lbYear" runat="server" Text="Label"></asp:Label>年<asp:Label ID="lbReason"
runat="server" Text="Label"></asp:Label>季)</div></td>
</tr>
<tr>
<td style="width: 100px; height: 23px;">部门:<asp:Label ID="lbSText" runat="server" Text='<%#strLbSTEXT %>'></asp:Label></td>
<td style="height: 23px;" colspan="3">
(上次结余:<asp:Label
ID="lbBUDGT" runat="server" Text="Label"></asp:Label>
|| 本部门总额:<asp:Label ID="lbBUDGT01" runat="server" Text="Label"></asp:Label>)<asp:TextBox
ID="lbBUDGT02" runat="server"></asp:TextBox></td>
<td style="width: 100px; height: 23px;">
</td>
</tr>
<tr>
<td colspan="5">
<asp:GridView ID="objGridView" runat="server" Width="100%" AutoGenerateColumns="False" OnRowDataBound="objGridView_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<asp:Label ID="lbID" runat="server" Text='<%#Container.DataItemIndex+1%>'></asp:Label>
</ItemTemplate>
<HeaderStyle Width="48px" />
<ItemStyle Width="48px" />
</asp:TemplateField>
<asp:BoundField DataField="SNAME" HeaderText="姓名" >
<HeaderStyle Width="50%" />
<ItemStyle Width="50%" />
</asp:BoundField>
<asp:BoundField DataField="KQXS" HeaderText="季度缺勤信息" HtmlEncode="False" >
<HeaderStyle Width="12%" />
<ItemStyle Width="12%" />
</asp:BoundField>
<asp:BoundField DataField="VAL01" HeaderText="标准绩效工资" HtmlEncode="False" >
<HeaderStyle Width="12%" />
<ItemStyle Width="12%" />
</asp:BoundField>
<asp:TemplateField HeaderText="二次分配额">
<EditItemTemplate>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("VAL02") %>' style="display:none;"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("VAL02") %>' Width="100px" onmouseout="tip.style.display='none';" onmouseover='wfsr(this);this.select();this.focus();' onclick="wfsr(this);this.select();this.focus();" onchange="setVal02(this);"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td style="width: 100px; height: 23px;">
合计:</td>
<td style="width: 100px; height: 23px;">
</td>
<td style="width: 100px; height: 23px;">
</td>
<td style="width: 100px; height: 23px;">
</td>
<td style="width: 100px; height: 23px;">
<asp:TextBox ID="lbVal02" style="border:0px" ReadOnly="true" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td colspan="5" style="height: 23px">
<hr color="#bed6ff" noshade="noshade" />
<asp:GridView ID="objForm" runat="server" Width="100%" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="SNAME2" HeaderText="人力资源审核人">
<HeaderStyle Width="30%" />
<ItemStyle Width="30%" />
</asp:BoundField>
<asp:BoundField DataField="ADVISE" HeaderText="审核意见" />
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td colspan="5" style="height: 69px">
<hr color="#b6d3f1" noshade="noshade" />
<table>
<tr>
<td style="height: 26px"><asp:Button ID="btnSave" runat="server" Text="保 存" OnClick="btnSave_Click" OnClientClick="return Chk_BUDGT02BUDGT03();"/>
<asp:Button ID="btnOK" runat="server" Text="提 交" OnClick="btnOK_Click" OnClientClick="return confirm('是否发起流程');"/>
<asp:Button ID="btnCancel" runat="server" Text="取 消"/></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
后台:
//*******************************************************
//*版本:V0.1
//*作者:wyj
//*时间:2008-4-24
//*修改时间:
//*******************************************************
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ChamcDoc.HRUser;
using ChamcDoc.HR;
public partial class _Default : System.Web.UI.Page
...{
public string strORGEH = "50000013"; //CurrUser.getCurrUser().DeptID;//这个是经理登陆传过来的部门ID号 触发点(测试点:50000013)
public string strCTYPE = "BON01"; //这个也是传入的是季度还是年终(BON01/BON02)
protected string strWhere = ""; //传入的条件
public string strLbSTEXT = ""; //部门名称
public string strDEPID = "";
public string strPosition = "部门经理填写本部门奖金分配";//当前位置
public string strLbBUDGT = ""; //上次结余
public string strLbBUDGT01 = ""; //本部门总额
public string strLbBUDGT02 = "";
public string strLbBUDGT03 = "";
DataSet ds_Emp = new DataSet(); //员工奖金记录信息
DataSet ds_Dep = new DataSet(); //员工部门记录信息
public decimal sum_val01 = 0.00m; //标准绩效工资合计
public decimal sum_val02 = 0.00m; //二次分配合计
protected void Page_Load(object sender, EventArgs e)
...{
if (!IsPostBack)
...{
GetDepDataList(strORGEH);
strCTYPE = this.ddlBonus.SelectedValue.ToString(); //给出列表初始选中状态
ViewState["CTYPE"] = (object)strCTYPE;
GetDepBonusData_DEP(strORGEH,strCTYPE);
onInit(strORGEH, strCTYPE);
GetDepBonusData_EMP(strORGEH,strCTYPE);
}
}
//得到各部门奖金分配员工列表数据
private void GetDepBonusData_EMP(string strORGEH,string CTYPE)
...{
strWhere = " ORGEH = " + strORGEH +" and CTYPE = '" + CTYPE + "'";
ds_Emp = HRBonusEmpList.Instance.GetList(strWhere);
this.objGridView.DataSource = ds_Emp.Tables[0].DefaultView;
objGridView.DataKeyNames = new string[] ...{ "ID" };//主键(注意DataKeyNames 是复数间接告诉我们这里是可以有多个字段即可以是联合主键)
this.objGridView.DataBind();
}
//得到各部门奖金分配部门列表数据
private void GetDepBonusData_DEP(string strORGEH,string CTYPE)
...{
strWhere = " ORGEH = " + strORGEH + " and CTYPE = '" + CTYPE + "'";
ds_Dep = HRBonusDepList.Instance.GetList(strWhere);
if (ds_Dep.Tables[0].Rows.Count > 0)
...{
strDEPID = ds_Dep.Tables[0].Rows[0]["ID"].ToString(); //部门
this.lbSText.Text = ds_Dep.Tables[0].Rows[0]["STEXT"].ToString(); //部门
this.lbBUDGT.Text = ds_Dep.Tables[0].Rows[0]["BUDGT"].ToString(); //上次结余
this.lbBUDGT01.Text = ds_Dep.Tables[0].Rows[0]["BUDGT01"].ToString(); //本部门总额
this.lbBUDGT02.Text = ds_Dep.Tables[0].Rows[0]["BUDGT02"].ToString(); //总计
strLbBUDGT02 = ds_Dep.Tables[0].Rows[0]["BUDGT02"].ToString();
strLbBUDGT03 = ds_Dep.Tables[0].Rows[0]["BUDGT03"].ToString();
ViewState["strLbBUDGT02"] = (object)strLbBUDGT02;
ViewState["strLbBUDGT03"] = (object)strLbBUDGT03;
ViewState["strDEPID"] = (object)strDEPID;
}
}
//得到所有要分配金额的列表
private void GetDepDataList(string strORGEH)
...{
DataSet ds = new DataSet();
strWhere = " ORGEH = '" + strORGEH + "' and ID not in (select DEPID from BOUNSWF_PROCESS where MARK = 3 or MARK = 1)";
ds = HRBonusDepList.Instance.GetList_YEREDEP(strWhere);
if (ds.Tables[0].Rows.Count > 0)
...{
this.ddlBonus.DataSource = ds;
ddlBonus.DataTextField = "Flag";
ddlBonus.DataValueField = "CTYPE";
ddlBonus.DataBind();
}
}
/**//// <summary>
/// 做合计,显示字体标识等
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void objGridView_RowDataBound(object sender, GridViewRowEventArgs e)
...{
if (e.Row.RowType == DataControlRowType.DataRow)
...{
Label lbVal02 = (Label)e.Row.Cells[4].FindControl("Label1") as Label;
if (e.Row.RowIndex >= 0)
...{
sum_val01 += Convert.ToDecimal(e.Row.Cells[3].Text);
if (lbVal02.Text != "")
...{
sum_val02 += Convert.ToDecimal(lbVal02.Text);
}
}
}
//合计统计
this.lbVal02.Text = sum_val02.ToString("0.00");
}
/**//// <summary>
/// 保存数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
...{
for (int i = 0; i < objGridView.Rows.Count; i++)
...{
TextBox txt_val02 = objGridView.Rows[i].Cells[4].FindControl("TextBox1") as TextBox;
HRBonusEmpList.Instance.CTYPE = ViewState["CTYPE"].ToString();
HRBonusEmpList.Instance.ORGEH = strORGEH.ToString();
HRBonusEmpList.Instance.VAL02 = Convert.ToDecimal(txt_val02.Text); //分配金额
HRBonusDepList.Instance.BUDGT02 = Convert.ToDecimal(ViewState["strLbBUDGT02"].ToString());
HRBonusDepList.Instance.BUDGT03 = Convert.ToDecimal(this.lbVal02.Text);
HRBonusEmpList.Instance.ID = Convert.ToInt32(objGridView.DataKeys[i].Value); //员工ID
CreateProcess(0);
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('数据保存成功!')</script>");
}
}
private void CreateProcess(int P_Mark)
...{
HRBonusDepList.Instance.ID = Convert.ToInt32(ViewState["strDEPID"].ToString()); //部门ID
if (P_Mark == 1)
...{
WFProcess.Instance.PROCESSNAME = this.ddlBonus.SelectedItem.Text;
WFProcess.Instance.PROCESSMEMO = this.ddlBonus.SelectedItem.Text;
WFProcess.Instance.SNAME1 = "登陆者";//登陆者
WFProcess.Instance.BEGTIME = System.DateTime.Now;//当前时间
WFProcess.Instance.MARK = 1; //开始流程
}
else
...{
WFProcess.Instance.PROCESSNAME = this.ddlBonus.SelectedItem.Text;
WFProcess.Instance.PROCESSMEMO = this.ddlBonus.SelectedItem.Text;
WFProcess.Instance.SNAME1 = "登陆者";//登陆者
WFProcess.Instance.BEGTIME = System.DateTime.Now;//当前时间
WFProcess.Instance.MARK = 1; //开始流程
}
HRBonusEmpList.Instance.Update(P_Mark); //保存上次所分配的金额值
}
/**//// <summary>
/// 提交数据开始生成流程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOK_Click(object sender, EventArgs e)
...{
for (int i = 0; i < objGridView.Rows.Count; i++)
...{
TextBox txt_val02 = objGridView.Rows[i].Cells[4].FindControl("TextBox1") as TextBox;
HRBonusEmpList.Instance.CTYPE = ViewState["CTYPE"].ToString();
HRBonusEmpList.Instance.ORGEH = strORGEH.ToString();
HRBonusEmpList.Instance.VAL02 = Convert.ToDecimal(txt_val02.Text); //分配金额
HRBonusDepList.Instance.BUDGT02 = Convert.ToDecimal(ViewState["strLbBUDGT02"].ToString());
HRBonusDepList.Instance.BUDGT03 = Convert.ToDecimal(this.lbVal02.Text);
HRBonusEmpList.Instance.ID = Convert.ToInt32(objGridView.DataKeys[i].Value); //员工ID
}
CreateProcess(1);
Response.Redirect("HRManageAudt.aspx");
}
/**//// <summary>
/// 生成5位随机数
/// </summary>
/// <returns></returns>
private string CreateRandom()
...{
Random ran = new Random(unchecked((int)DateTime.Now.Ticks));
int num = ran.Next(0, 9999) + 10000;
return num.ToString();
}
/**//// <summary>
/// 下拉列表框改变时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlBonus_SelectedIndexChanged(object sender, EventArgs e)
...{
strCTYPE = this.ddlBonus.SelectedValue.ToString();
ViewState["CTYPE"] = (object)strCTYPE;
strLbBUDGT02 = ViewState["strLbBUDGT02"].ToString();
GetDepBonusData_EMP(strORGEH, strCTYPE);
GetDepBonusData_DEP(strORGEH, strCTYPE);
onInit(strORGEH, strCTYPE);
}
//这里主要做页面初始化工作
private void onInit(string strORGEH, string CTYPE)
...{
if (this.ddlBonus.Items.Count > 0)
...{
if (this.ddlBonus.SelectedItem.Value == "BON01")//当选中的是季度奖金分配
...{
this.lbddlBonusText.Text = this.ddlBonus.SelectedItem.Text;
}
else if (this.ddlBonus.SelectedItem.Value == "BON02") //当选中的年度奖金分配
...{
this.lbddlBonusText.Text = this.ddlBonus.SelectedItem.Text;
}
}
strWhere = " Mark = 2 and DepID = (select ID from HRBONUS_DEPLIST where ORGEH = " + strORGEH + " and CTYPE = '" + CTYPE + "')";
if (WFProcess.Instance.Exit(strWhere) > 0) //有返回的
...{
this.objForm.Visible = true;
this.lbPosition.Text = "部门经理修改返回本部门奖金分配";//当前位置
strWhere = " ProcessID = (select ProcessID from BOUNSWF_Process where Mark=2 and DepID = (select ID from HRBONUS_DEPLIST where ORGEH = " + strORGEH + " and CTYPE = '" + CTYPE + "'))";
DataSet ds = WFForm.Instance.GetList(strWhere);
if (ds.Tables[0].Rows.Count > 0)
...{
this.objForm.DataSource = ds.Tables[0].DefaultView;
this.objForm.DataBind();
}
}
else
...{
this.lbPosition.Text = strPosition;//当前位置
this.objForm.Visible = false;
}
}
}
做得不好,只想给大家提个思路
相关文章推荐
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_03_设置窗体弹出退出顺序
- 解决CSDN的code功能,无法git clone多个项目的问题
- Oracle数据库是一个大家都非常熟悉的数据库管理系统,是工作中会经常要用到的,关于Oracle数据库中的dba和sysdba相信很多人都会经常把他们两个给搞混了,下文中将为大家讲解Oracle中db
- 本文实例讲述了AngularJS+bootstrap实现动态选择商品功能。分享给大家供大家参考,具体如下: 项目中后台一个商品库,新建活动时动态选择所需商品
- 实现遮蔽罩弹出窗体功能
- Java实现点击按钮弹出新窗体的功能实现,旧窗体不进行操作
- 【Android高级】CSDN博客精华知识讲解汇总
- 11个实验项目,27个综合知识点的全程记录+讲解+知识点-希望对大家有帮助
- CSDN的相册功能恢复使用,大家要珍惜啊!
- [项目实施失败讨论Case] “凭心而论,在这家公司很敬业的工作了3年多,老板最后给我下的评语,大家都看看吧,千万别和我走同一条路!”(摘自csdn)
- 以前经常来这里,但是很少写博客.最近在做silverlight 项目.前几天被一个 类似.netmarquee的循环滚动的功能憋了很长时间,现在和大家分享下.
- java在线聊天项目0.3版本 制作客户端窗体,实现发送按钮和回车发送信息功能,使用ActionListener监听事件中actionPerformed方法(用内部类和匿名内部类两种方法)
- 控件弹出漂亮的模式窗体功能
- 通过双击listview中的项目来打开新窗体,有点像组策略中的双击一条策略,然后弹出相应的窗体,修改策略
- CSDN之路功能已经恢复,感谢大家
- Android 开源项目浅读-------SwipeMenuListView-重写,第五章,滑动弹出,放手关闭功能实现
- Asp.net+Extjs实现对GridPanel分页、行内编辑、增加、删除、弹出新窗体增加、数据验证、编辑指定列、数据格式转换等功能
- 扎实基础,实战显身手--CSDN为大家推出免费经典实战项目
- 实现QQ窗体的缩入伸出功能(文章来自csdn) 选择自 lovecdw 的 Blog
- netsuite弹出窗体的数据回传例子