datagrid某列中的textbox触发事件

本文介绍了一个使用ASP.NET DataGrid控件的应用案例,其中包括如何通过AJAX实现页面局部刷新,具体展示了如何在DataGrid中使用TextBox控件进行编辑,并通过AJAX调用服务器端方法实时更新数据。
html:
<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%" onchange="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;
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值