RadButton - 单击方法,在 RadGrid EditItemTemplate 中不起作用

RadButton - Single Click approach, not working inside RadGrid EditItemTemplate

里面有一个RadGrid,里面有一个RadComboBox,里面有一个asp Button EditItemTemplate.

以下是当前代码:

<telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
   <ItemTemplate>
       <asp:Label ID="lblAcCode" runat="server" Text='<%# Eval("AccountCode")%>'></asp:Label>
   </ItemTemplate>
   <EditItemTemplate>

       <telerik:RadComboBox ID="ddlAccountCode" runat="server" Height="200" Width="240" DropDownWidth="310"       
         EnableLoadOnDemand="True" OnItemsRequested="ddlAccountCode_ItemsRequested" EnableItemCaching="true"  
         ShowMoreResultsBox="True" EnableVirtualScrolling="true" AllowCustomText="true" MarkFirstMatch="true"
         Filter="Contains" HighlightTemplatedItems="true" CausesValidation="true" AppendDataBoundItems="true" 
         DataTextField="AccountDescription" DataValueField="AccountCodeID"
         ShowDropDownOnTextboxClick="false" 
         OnClientDropDownOpening="OnClientDropDownOpening" OnClientItemsRequested="OnClientItemsRequested"
         OnClientTextChange="LoadECnEntityKeys" />

       <asp:Button ID="btnSearch" runat="server" Text="Search" OnClient="btnSearch_Click" />
       &nbsp;
       <asp:Label ID="lblMsg" runat="server" Visible="false"></asp:Label>

   </EditItemTemplate>
</telerik:GridTemplateColumn>

protected void btnSearch_Click(object sender, EventArgs e)
{
     Response.Write("Default.aspx");
     //other code
}

当我 type/key-in 里面的东西 RadComboBox 然后点击 asp Button, 然后只有与键入文本相关的搜索在执行 asp Button.

OnClick 事件后开始并显示

现在,新要求出现了 RadButton(使用 - 单击 方法)代替 asp Button,以避免双击。

问题是: 当我在 RadGrid 的 EditItemTemplate 中实现 RadButton 时,RadButton 从不回发,即,当我点击它时什么也没有发生。 但是当我在 RadGrid 之外使用时,同样的 RadButton 工作正常。

下面是使用 RadButton(带有 - 单击 方法):

<telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
   <ItemTemplate>
       <asp:Label ID="lblAcCode" runat="server" Text='<%# Eval("AccountCode")%>'></asp:Label>
   </ItemTemplate>
   <EditItemTemplate>

       <telerik:RadComboBox ID="ddlAccountCode" runat="server" Height="200" Width="240" DropDownWidth="310"       
         EnableLoadOnDemand="True" OnItemsRequested="ddlAccountCode_ItemsRequested" EnableItemCaching="true"  
         ShowMoreResultsBox="True" EnableVirtualScrolling="true" AllowCustomText="true" MarkFirstMatch="true"
         Filter="Contains" HighlightTemplatedItems="true" CausesValidation="true" AppendDataBoundItems="true" 
         DataTextField="AccountDescription" DataValueField="AccountCodeID"
         ShowDropDownOnTextboxClick="false" 
         OnClientDropDownOpening="OnClientDropDownOpening" OnClientItemsRequested="OnClientItemsRequested"
         OnClientTextChange="LoadECnEntityKeys" />

       <telerik:RadButton runat="server" ID="btnSearch" Text="Search" SingleClick="true"
        SingleClickText="Submitting..." OnClick="btnSearch_Click" />
       &nbsp;
       <asp:Label ID="lblMsg" runat="server" Visible="false"></asp:Label>

   </EditItemTemplate>
</telerik:GridTemplateColumn>

protected void btnSearch_Click(object sender, EventArgs e)
{
     Response.Write("Default.aspx");
     //other code
}

请告诉我为什么会这样? 请回复

提前致谢

我建议您使用 CommandName 作为按钮事件。无论如何,这是我的代码......我尝试使用 OnClick 和 CommandName 它工作得很好。我怀疑你的错误是某种 javascript...

.aspx

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" Width="100%" 
 OnNeedDataSource="RadGrid1_NeedDataSource" OnItemCommand="RadGrid1_ItemCommand" 
 OnItemDataBound="RadGrid1_ItemDataBound">
<MasterTableView EditMode="InPlace">
    <Columns>
        <telerik:GridTemplateColumn>
            <ItemTemplate>
                <asp:Label ID="lblAcCode" runat="server" Text='<%# Eval("T")%>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <telerik:RadComboBox ID="rcb" runat="server" AllowCustomText="true">
                </telerik:RadComboBox>
                <telerik:RadButton runat="server" ID="btnSearch" Text="Search" 
                 SingleClick="true" SingleClickText="Submitting..." CommandName="Search" />
            </EditItemTemplate>
        </telerik:GridTemplateColumn>
        <telerik:GridTemplateColumn>
            <ItemTemplate>
                <telerik:RadButton ID="btnEdit" runat="server" 
                 Text="Edit" CommandName="Edit"></telerik:RadButton>
            </ItemTemplate>
            <EditItemTemplate>
                <telerik:RadButton ID="btnCancel" runat="server" Text="Cancel" 
                 CommandName="Cancel"></telerik:RadButton>
            </EditItemTemplate>
        </telerik:GridTemplateColumn>
    </Columns>
</MasterTableView>

.cs

protected void Page_Load(object sender, EventArgs e)
{
    // Check
    if (!IsPostBack)
    {
        // Variable
        DataTable dt = new DataTable();
        dt.Columns.Add("T");

        // Loop & Add
        for (int i = 0; i < 10; i++)
            dt.Rows.Add(i + "");

        // Check & Bind
        if (dt != null)
        {
            ViewState["Grid"] = dt;

            RadGrid1.DataSource = dt;
            RadGrid1.DataBind();

            // Dispose
            dt.Dispose();
        }
    }
}

protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
    RadGrid1.DataSource = ViewState["Grid"] as DataTable;
}

protected void btnSearch_Click(object sender, EventArgs e)
{
    Response.Write("GG");
}

protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
    // Check
    if (e.CommandName == "Search")
    {
        // Variable
        GridEditableItem item = e.Item as GridEditableItem;
        string something = "";

        // Find Control
        RadComboBox rcb = item.FindControl("rcb") as RadComboBox;

        // Check
        if (rcb != null)
        {
            // Set
            something = rcb.Text;

            // Do Something 

            Response.Write(something);
        }
    }
}

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    // Check
    if (e.Item is GridEditableItem)
    {
        // FindControl
        RadComboBox rcb = e.Item.FindControl("rcb") as RadComboBox;

        // Check
        if (rcb != null)
        {
            rcb.DataSource = ViewState["Grid"] as DataTable;
            rcb.DataTextField = "T";
            rcb.DataValueField = "T";
            rcb.DataBind();
        }
    }
}