Кнопка управления пользователем работает нормально на одной странице, но не на другой - PullRequest
0 голосов
/ 31 января 2019

У меня есть пользовательский элемент управления radgrid (rgTask), который имеет другой пользовательский элемент управления (ContractTaskInput) в качестве формы редактирования.rgTask на 2 страницах (ContractDetail & LeasingContractDetail).

Я обнародовал эти события, чтобы страницы могли использовать их по-разному

 public partial class ContractTaskGrid : System.Web.UI.UserControl
   {
    public event EventHandler<GridNeedDataSourceEventArgs> NeedDataSource;
    public event EventHandler<GridCommandEventArgs> UpdateCommand;
    public event EventHandler<GridCommandEventArgs> DeleteCommand;
    public event EventHandler<GridCommandEventArgs> InsertCommand;
    public event EventHandler<GridItemEventArgs> ItemDataBound;

    void OnUpdateCommand(object sender, GridCommandEventArgs e)
    {
        if (UpdateCommand != null)
        {
            UpdateCommand(sender, e);
        }
    }
    void OnDeleteCommand(object sender, GridCommandEventArgs e)
    {
        if (DeleteCommand != null)
        {
            DeleteCommand(sender, e);
        }
    }
    void OnInsertCommand(object sender, GridCommandEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine("InsertCommandnull?");

        if (InsertCommand != null)
        {
            System.Diagnostics.Debug.WriteLine("InsertCommandnotnull");

            InsertCommand(sender, e);
        }
    }
    void OnNeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        if (NeedDataSource != null)
        {
            NeedDataSource(sender, e);
        }
    }
    void OnItemDataBound(object sender, GridItemEventArgs e)
    {
        if (ItemDataBound != null)
        {
            ItemDataBound(sender, e);
        }
    }


    public RadGrid Grid
    {
        get { return rgTask; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        System.Diagnostics.Debug.WriteLine("Load Grid");
    }

    protected void rgTask_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        OnNeedDataSource(sender, e);
    }

    protected void rgTask_UpdateCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        OnUpdateCommand(sender, e);
    }

    protected void rgTask_DeleteCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        OnDeleteCommand(sender, e);
    }

    protected void rgTask_InsertCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine("rgTask_InsertCommand run assigned");
       OnInsertCommand(sender, e);
    }


    protected void rgTask_ItemDataBound(object sender, GridItemEventArgs e)
    {
        OnItemDataBound(sender, e);
    }
}

Все события работают нормально на странице ContractDetail, но только InsertCommand & UpdateCommandне работают на странице LeasingContractDetail.

Ниже приведен элемент управления ContractTaskInput

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ContractTaskInput.ascx.cs" Inherits="EBT.Web.Control.BillingModule.ContractTaskInput" %>
<div class="divStyle">
    <table>

        <tr>
            <td>
                Assigned To:
            </td>
            <td>
                <telerik:RadComboBox ID="rcbAssignedTo" runat="server" Filter="Contains"
                        Width="200px" DropDownAutoWidth="Enabled" OnDataBinding="rcbAssignedTo_DataBinding"
                        AutoPostBack="false" CausesValidation="false">
                    </telerik:RadComboBox>
            </td>
        </tr>

        <tr>
            <td>
                Assigned Task:
            </td>
             <td><telerik:RadTextBox ID="txtAssignedTask" runat="server" Width="500px"
                    MaxLength="5000" TextMode="MultiLine" Rows="7" Columns="40">
                </telerik:RadTextBox>
             </td>
            <td>
                 <asp:RequiredFieldValidator ID="rfAssignedTask" runat="server"
                        ErrorMessage="* Required" ValidationGroup="ActivityValidation"
                        ControlToValidate="txtAssignedTask"
                        Display="Dynamic" ForeColor="Red" />
             </td>
        </tr>       
        <tr>
            <td>
                Status:
            </td>
            <td>
                <telerik:RadComboBox ID="rcbStatus" runat="server"
                        Width="200px" DropDownAutoWidth="Enabled" OnDataBinding="rcbStatus_DataBinding"
                        AutoPostBack="false" CausesValidation="false">
                    </telerik:RadComboBox>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <asp:ValidationSummary ID="ValidationSummary1" runat="server"
                    HeaderText='Please correct the following error before proceed:'
                    ForeColor="Red" />
            </td>
        </tr>
        <tr>
            <td class="alignTop">
                <asp:Button ID="btnUpdateTask" runat="server" ValidationGroup="ActivityValidation"
                    Text='<%# (Container is GridEditFormInsertItem) ? "Insert" : "Update" %>'
                    CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'></asp:Button>
                &nbsp;
                <asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="False" CommandName="Cancel"></asp:Button>
                &nbsp;&nbsp;

                <asp:Label ID="lblMsg" runat="server" EnableViewState="false" ForeColor="red"></asp:Label>
            </td>
            <asp:HiddenField ID="hfContractId" runat="server" /> 
            <asp:HiddenField ID="hfTaskId" runat="server" />
            <asp:HiddenField ID="hfCurrentStatus" runat="server" /> 
        </tr>
    </table>
</div>

Я считаю, что проблема связана с btnUpdate, так как функция удаления отлично работает на обеих страницах.Я не очень знаком с обработкой событий, поэтому любая помощь в этом вопросе будет принята с благодарностью.

...