< asp:datagrid id = " dg_RecItem " runat = " server " CssClass = " DataGrid " Width = " 98% " AutoGenerateColumns = " False " >
< SelectedItemStyle CssClass = " dgdSelectedItem " ></ SelectedItemStyle >
< EditItemStyle CssClass = " dgdEditItem " ></ EditItemStyle >
< ItemStyle CssClass = " dgdItem " ></ ItemStyle >
< HeaderStyle Wrap = " False " CssClass = " dgdHead " ></ HeaderStyle >
< Columns >
< asp:TemplateColumn HeaderText = " Qty Recv " >
< HeaderStyle Width = " 100px " ></ HeaderStyle >
< ItemTemplate >
< asp:TextBox id = " txt_QtyRecv " runat = " server " Width = " 90% " AutoPostBack = " True " OnTextChanged = " txt_QtyRecv_TextChange " ></ asp:TextBox >
< asp:Label id = " lbl_QtyRecv " runat = " server " ></ asp:Label >
</ ItemTemplate >
</ asp:TemplateColumn >
</ Columns >
</ asp:datagrid >
cs:
public void txt_QtyRecv_TextChange( object sender , System.EventArgs e )
... {
TextBox tb = (TextBox)sender;
DataGridItem item = (DataGridItem)tb.Parent.Parent;
itemIndex = item.ItemIndex;
...
}
ajax方法:
<script>
function AI_Compute_Prom(ctlID)
{
var ctlEmp= getDataGrid_TemplateControlID(ctlID.toString(),'AI_txt','AI_txt_EmpID');
var ctlGrade = getDataGrid_TemplateControlID(ctlID.toString(),'AI_txt','AI_txt_Grade');
var empID = document.getElementById(ctlEmp).value.Trim();
var periodID = document.getElementById("AI_txt_PeriodID").value.Trim();
var inputParams = empID +';'+ periodID+';'+Grade;
outputParams = HMS.AI.Page.StaffAI.Compute_AI_PROM(inputParams).value;
AI_Write(ctlID,outputParams);
}
function getDataGrid_TemplateControlID(ctlID,partID,newPartID)
{
var nIndex = ctlID.indexOf(partID.toString());
var prefixID = ctlID.substring(0, nIndex);
return prefixID+newPartID.toString();
}
function AI_Write(ctlID,outputParams)
{
var ctlMerit = getDataGrid_TemplateControlID(ctlID.toString(),'AI_txt','AI_txt_Merit');
var ctlSVC = getDataGrid_TemplateControlID(ctlID.toString(),'AI_txt','AI_txt_SVC');
var txtMerit = document.getElementById(ctlMerit);
var txtSVC = document.getElementById(ctlSVC);
var outputArray = outputParams.split(';');
if (outputArray.length >= 4)
{
txtMerit.value = outputArray[0];
txtSVC.value = outputArray[1];
}
}
</script>
<EditItemTemplate>
<asp:TextBox id="AI_txt_PreSal" runat="server" CssClass="textbox" Width="100%" οnchange="AI_Compute_Prom(this.id.toString())"></asp:TextBox>
</EditItemTemplate>
.cs:
引用AjaxPro.dll。
private void Page_Load(object sender, System.EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(FileName));
}
[AjaxPro.AjaxMethod]
public string Compute_AI_PROM(string inputParams)
{
string outputParams = "";
AppraisalMasterCTL appraisalMaster = new AppraisalMasterCTL();
AIRecordENT record = new AIRecordENT();
string[] inputArray = inputParams.Split(';');
record.EmployeeID = inputArray[0];
record.PeriodID = Convert.ToInt32(inputArray[1]);
appraisalMaster.computeProm(record);
outputParams =record.AIMerit +";"+record.SVC_Increment;
return outputParams;
}