2009-09-18 57 views
0

我目前有一个GridView,它使用了一个类型为Button的ButtonField,并且可以工作。ImageButton和GridView问题 - 无效回传

但是我希望能够使用ConfirmButtonExtender是不能在ButtonField字段操作AjaxControlToolkit的一部分,所以我决定把一个TemplateField内的的ImageButton但是每当我按一下按钮我收到一封无效的回发或回调参数错误。

任何意见/建议将不胜感激。谢谢。

新模板字段

  <asp:TemplateField> 
       <ItemTemplate> 
        <asp:ImageButton ID="ibtnDelete" ImageUrl="~/Images/cross.png" CommandArgument='<% Eval("soid") %>' CommandName="deleteSO" AlternateText="Delete" OnClick="ibtnDelete_Click" ToolTip="Delete the selected standing order" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 

现有的GridView

<asp:GridView ID="gvStandingOrders" runat="server" DataKeyNames="soid" OnRowCommand="gvStandingOrders_RowCommand"> 
     <Columns> 
      <asp:ButtonField ButtonType="Image" CommandName="editSO" ImageUrl="~/Images/page_white_paintbrush.png" Text="Edit" /> 
      <asp:ButtonField ButtonType="Image" CommandName="deleteSO" ImageUrl="~/Images/cross.png" Text="Delete" />    
      <asp:BoundField DataField="Prefix" HeaderText="Prefix" /> 
      <asp:BoundField DataField="PhoneNumber" HeaderText="Phone Number" /> 
      <asp:BoundField DataField="Description" HeaderText="Description" /> 
      <asp:BoundField DataField="Amount" DataFormatString="{0:C}" HeaderText="Customer Charge" /> 
      <asp:BoundField DataField="SOCost" DataFormatString="{0:C}" HeaderText="Bureau Buy Price" /> 
      <asp:BoundField DataField="UnitPrice" DataFormatString="{0:C}" HeaderText="TMS Buy Price" /> 
      <asp:BoundField DataField="Frequency" HeaderText="Frequency" /> 
      <asp:BoundField DataField="StartDate" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Start Date" /> 
      <asp:BoundField DataField="LastInvoiceDate" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Last Invoice Date" /> 
      <asp:BoundField DataField="NextInvoiceDate" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Next Invoice Date" /> 
      <asp:BoundField DataField="EndDate" DataFormatString="{0:dd/MM/yyyy}" HeaderText="End Date" /> 
      <asp:BoundField DataField="soid" HeaderText="SO ID" /> 
     </Columns> 
    </asp:GridView> 

代码背后

protected void gvStandingOrders_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName.Equals("editSO")) 
     { 
      Session["SOID"] = Convert.ToInt32(gvStandingOrders.DataKeys[Convert.ToInt32(e.CommandArgument)].Value); 
      Response.Redirect("/Main/ClientMaintenance/StandingOrders/EditStandingOrder.aspx", true); 
     } 
     else if (e.CommandName.Equals("deleteSO")) 
     { 
      int soid = Convert.ToInt32(gvStandingOrders.DataKeys[Convert.ToInt32(e.CommandArgument)].Value); 

      // Header 
      int provisionID = Provisioning.GenerateHeader("SO", "provisioning_standingorder"); 

      // Create Details 
      GlobFunctions.UpdateStoredProc("InsertStandingOrderHeader", GlobVar.ObjConnClick, new SqlParameter[] 
      { 
       new SqlParameter("@ProvisionID", provisionID), 
       new SqlParameter("@Client_Action", "D"), 
       new SqlParameter("@SOID", soid) 
      }); 

      // Audit 
      GlobFunctions.AddToAudit(String.Format("Removing standing order : {0}", soid), Session["CustomerCode"].ToString()); 
     } 
    } 

    protected void ibtnDelete_Click(object sender, ImageClickEventArgs e) 
    { 
     //select the row 
     ImageButton imageButton = (ImageButton)sender; 
     TableCell tableCell = (TableCell)imageButton.Parent; 
     GridViewRow row = (GridViewRow)tableCell.Parent; 
     int soid = Convert.ToInt32(gvStandingOrders.DataKeys[Convert.ToInt32(row.RowIndex)].Value); 

     // Header 
     int provisionID = Provisioning.GenerateHeader("SO", "provisioning_standingorder"); 

     // Create Details 
     GlobFunctions.UpdateStoredProc("CLICK10_InsertStandingOrderHeader", GlobVar.ObjConnClick, new SqlParameter[] 
      { 
       new SqlParameter("@ProvisionID", provisionID), 
       new SqlParameter("@Client_Action", "D"), 
       new SqlParameter("@SOID", soid) 
      }); 

     // Audit 
     GlobFunctions.AddToAudit(String.Format("Removing standing order : {0}", soid), Session["CustomerCode"].ToString()); 

    } 

回答

1
CommandArgument='<% Eval("soid") %>' 

应该

CommandArgument='<%# Eval("soid") %>' 

注意 “<%#”