2013-10-21 59 views
0

目前我在DataGrid的更新函數中遇到問題。它無法捕獲我在DataGrid中的輸入。 有沒有辦法通過使用DataGrid捕獲我的輸入?因爲大部分使用GridView的信息互聯網都不一樣。C#DataGrid更新函數

被修改: 這是一個DataGrid,帶有更新,編輯和刪除功能。 例如, 我選擇一行數據並按下編輯按鈕,填寫所選行上的數據,然後按更新按鈕更新選定的行信息。 在這種情況下,我無法在編輯後捕獲選定的行信息。 所以,我無法更新行數據。

下面的代碼爲HTML

<asp:DataGrid ID="dgRecords" runat="server" Width="100%" DataKeyField="InsitePriceID" 
        AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" CellPadding="5" 
        OnPageIndexChanged="dgRecords_PageIndexChanged" OnSortCommand="dgRecords_SortCommand" 
         OnDeleteCommand="dgRecords_OnDelete" OnEditCommand="dgRecords_OnEdit" OnUpdateCommand="dgRecords_OnUpdate" 
         OnCancelCommand="dgRecords_OnCancel"> 
        <AlternatingItemStyle CssClass="Data"></AlternatingItemStyle> 
        <ItemStyle CssClass="Data"></ItemStyle> 
        <HeaderStyle CssClass="ColHeader"></HeaderStyle> 
        <Columns> 
         <asp:BoundColumn Visible="False" DataField="InsitePriceID"></asp:BoundColumn> 
         <asp:BoundColumn DataField="ServicePartFrom" HeaderText="No. of Service Part (From)" 
          SortExpression="ServicePartFrom"></asp:BoundColumn> 
         <asp:BoundColumn DataField="ServicePartTo" HeaderText="No. of Service Part (To)" 
          SortExpression="ServicePartTo"></asp:BoundColumn> 
         <asp:BoundColumn DataField="BaseAmount" HeaderText="% from Base Amount" SortExpression="BaseAmount"> 
         </asp:BoundColumn> 
         <asp:EditCommandColumn ButtonType="PushButton" CancelText="Cancel" EditText="Edit" 
          UpdateText="Update"></asp:EditCommandColumn> 
         <asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="Delete"></asp:ButtonColumn> 
        </Columns> 
        <PagerStyle Mode="NumericPages"></PagerStyle> 
       </asp:DataGrid> 
<td style="width: 1014px"> 
       <asp:Label ID="lbla" runat="server"></asp:Label> 
       <asp:Label ID="lblb" runat="server"></asp:Label> 
       <asp:Label ID="lblc" runat="server"></asp:Label> 
      </td> 

後面的代碼。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     ucWScr.SetValue("Insite Price"); 
     pnlMsg.Visible = false; 
     BindData(""); 
    } 
} 

private void BindData(string _sortExpression) 
    { 
     clsAdmin obj = new clsAdmin(); 
     int intNoRec = 0; 

     DataTable tbl = obj.SearchInsitePrice(); 

    } 

protected void dgRecords_OnUpdate(object source, DataGridCommandEventArgs e) 
{ 
    if (e.CommandName == "Update") 
    { 
     string strInsitePriceID = dgRecords.DataKeys[e.Item.ItemIndex].ToString(); 

//Error start from here 

     lbla.Text = e.Item.Cells[1].Text; 
     lblb.Text = e.Item.Cells[2].Text; 
     lblc.Text = e.Item.Cells[3].Text; 

     int intServicePartFrm = Int32.Parse(lbla.Text); 
     int intServicePartTo = Int32.Parse(lblb.Text); 
     int fltPercentBaseAmt = Int32.Parse(lblc.Text); 

//Error ends here 

     string strUserLogin = CurrentUser.UserLogin.ToString(); 
     DateTime dteNow = DateTime.Now; 

     if (strInsitePriceID != "") 
     { 
      EStatus status = webform.UpdateInsitePrice(strInsitePriceID, intServicePartFrm, intServicePartTo, fltPercentBaseAmt, strUserLogin, dteNow); 
      if (status != EStatus.Success) throw new Exception("Update failed."); 
+0

你能指定_「無法捕獲我的輸入」_?這是否意味着你在那裏得到默認值?然後我猜你是在回發數據綁定'DataGrid'。添加'if(!IsPostBack)BindDataGrid();' –

+0

是的,我從數據庫獲取默認值顯示,但我無法編輯行數據。我的更新功能有問題。 – user2889335

+0

正如我在我上次評論中提到的,我假設你在回發中也是數據綁定。告訴我們你的'Page_Load'。 –

回答

0

我用這個方法解決了這個問題。

protected void dgRecords_OnUpdate(object source, DataGridCommandEventArgs e) 
{ 
    if (e.CommandName == "Update") 
    { 
     string strInsitePriceID = dgRecords.DataKeys[e.Item.ItemIndex].ToString(); 
     TextBox temp, temp2, temp3; 
     temp = (TextBox)e.Item.Cells[1].Controls[0]; 
     temp2 = (TextBox)e.Item.Cells[2].Controls[0]; 
     temp3 = (TextBox)e.Item.Cells[3].Controls[0]; 

     int intServicePartFrm = Int32.Parse(temp.Text); 
     int intServicePartTo = Int32.Parse(temp2.Text); 
     int fltPercentBaseAmt = Int32.Parse(temp3.Text);