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

时间:2015-09-14 02:56:38

标签: c# asp.net radgrid

里面有一个RadGrid,里面有RadComboBoxasp 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
}

当我在RadComboBox内输入/键入内容并点击asp Button时, 然后,只有OnClick asp Button事件执行后,才会启动并显示与键入文本相关的搜索。

现在,新要求来到RadButton(单击 - 单击 方法)取代asp Button,以避免双击。

问题是:当我在RadGrid的RadButton内实施EditItemTemplate时,RadButton永远不会回发,即当我点击它时没有任何反应。 但是当我在RadButton之外使用时,RadGrid工作正常。

以下是使用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
}

请让我知道为什么这是hapenning? 请回复

提前致谢

1 个答案:

答案 0 :(得分:1)

我建议你使用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();
        }
    }
}