【问题标题】:ImageButton and GridView problem - invalid postbackImageButton 和 GridView 问题 - 无效回发
【发布时间】:2010-11-29 12:02:18
【问题描述】:

我目前有一个使用图像类型的 ButtonField 的 Gridview,这很有效。

但是我希望能够使用作为 AjaxControlToolkit 一部分的 ConfirmButtonExtender,它不能对 Buttonfield 进行操作,因此我决定将 ImageButton 放置在 TemplateField 内,但是每当我单击按钮时,我都会收到一个 无效的回发或回调参数错误。

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

新模板字段

            <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());

    }

【问题讨论】:

    标签: asp.net gridview imagebutton


    【解决方案1】:
    CommandArgument='<% Eval("soid") %>'
    

    应该是

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

    注意“

    【讨论】:

      猜你喜欢
      • 2012-07-26
      • 2011-05-02
      • 2018-01-18
      • 2021-07-25
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多