C# Telerik RadInputManager与RadGrid集成
我有一个用于编辑数据的“RadGrid” 我已启用过滤功能 我使用“RadInputManager”执行验证 当我尝试更新更改时,“RadInputManager”也在验证“TextBox”过滤器 我怎样才能解决这个问题 我添加代码“aspx”以显示示例:C# Telerik RadInputManager与RadGrid集成,c#,asp.net,telerik,C#,Asp.net,Telerik,我有一个用于编辑数据的“RadGrid” 我已启用过滤功能 我使用“RadInputManager”执行验证 当我尝试更新更改时,“RadInputManager”也在验证“TextBox”过滤器 我怎样才能解决这个问题 我添加代码“aspx”以显示示例: <telerik:RadAjaxManager runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="Rad
<telerik:RadAjaxManager runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGrid1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" UpdatePanelCssClass="" />
<telerik:AjaxUpdatedControl ControlID="RadInputManager1" UpdatePanelCssClass="" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js">
</asp:ScriptReference>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js">
</asp:ScriptReference>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js">
</asp:ScriptReference>
</Scripts>
</telerik:RadScriptManager>
<telerik:RadInputManager ID="RadInputManager1" runat="server">
<telerik:TextBoxSetting InitializeOnClient="False" ErrorMessage="Required!" Validation-IsRequired="True" Validation-ValidateOnEvent="Submit">
<TargetControls>
<telerik:TargetInput ControlID="RadGrid1" />
</TargetControls>
</telerik:TextBoxSetting>
</telerik:RadInputManager>
<telerik:RadGrid ID="RadGrid1" runat="server" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" AutoGenerateEditColumn="True" CellSpacing="0" DataSourceID="LinqDataSource1" EnableHeaderContextFilterMenu="True" EnableHeaderContextMenu="True" GridLines="None">
<MasterTableView CommandItemDisplay="Top" DataKeyNames="RolId" DataSourceID="LinqDataSource1" EditMode="InPlace">
<Columns>
<telerik:GridBoundColumn DataField="Name" HeaderText="Name" SortExpression="Name" UniqueName="Name">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Description" HeaderText="Description" SortExpression="Description" UniqueName="Description">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="WebApplication1.DataClasses1DataContext" EntityTypeName="" TableName="Rol">
</asp:LinqDataSource>
谢谢,
Delvis您似乎可以使用RadGrid ItemCreated事件动态向绑定控件添加验证行为,并声明
Telerik:TextBoxSetting
,而不指定目标控件
前端(标记)
注意tbName
和tbDescription
很可能不存在。当然,为这两个数据字段都创建了一个文本框,但是如果将列保留为telerik:GridBoundColumns,则必须发现控件生成的名称是什么。。。另一种方法是使用GridTemplateColumn
备选列(标记:RadGrid>MasterTableView>列)
这应该对你有用,让我知道。。我还没有对它进行测试。请解释一下“更新更改”是什么意思。。。。诚然,我对这种形式的验证没有做太多的工作。但是,对我来说很明显,您不应该将整个网格指定为目标输入控件。但是,我不确定你会如何在自动生成的编辑状态绑定控件上使用RadInputManager。。通过查看RadInputManager和演示,我可以看出,他们正在推广针对RadGrid的产品,但不在网格上使用过滤器。。他们也没有在示例演示中说明这一场景。。在客户端或服务器代码中确定哪个控件引发验证事件应该不会那么困难。没有足够的点来显示问题的图片。”“更新更改”表示您希望保存更改(“提交”)。我想使用Telerik控件而不使用太多额外的代码。希望验证程序只考虑那些具有相同验证组的控件。注意,您可能会使用GRIDTEMPLANCULLAMP放弃整个动态行为和ITEM创建的方面,并使用TeleRik:TrimBox设置目标控件。你可能应该先试试。。这可能是更合适的答案。。
<telerik:RadInputManager ID="RadInputManager1" runat="server">
<telerik:TextBoxSetting BehaviorID="TextBoxBehavior1" InitializeOnClient="False" ErrorMessage="Required!" Validation-IsRequired="True" Validation-ValidateOnEvent="Submit">
</telerik:TextBoxSetting>
</telerik:RadInputManager>
<telerik:RadGrid ID="RadGrid1" runat="server" OnItemCreated="RadGrid1_ItemCreated" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" AutoGenerateEditColumn="True" CellSpacing="0" DataSourceID="LinqDataSource1" EnableHeaderContextFilterMenu="True" EnableHeaderContextMenu="True" GridLines="None">
<MasterTableView CommandItemDisplay="Top" DataKeyNames="RolId" DataSourceID="LinqDataSource1" EditMode="InPlace">
<Columns>
<telerik:GridBoundColumn DataField="Name" HeaderText="Name" SortExpression="Name" UniqueName="Name">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Description" HeaderText="Description" SortExpression="Description" UniqueName="Description">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditFormItem editedItem = e.Item as GridEditFormItem;
TextBoxSetting inputSettings = (DateInputSetting)RadInputManager1.GetSettingByBehaviorID("TextBoxBehavior1");
RadTextBox tbName = editedItem.FindControl("tbName") as RadTextBox;
RadTextBox tbDescription = editedItem.FindControl("tbDescription") as RadTextBox;
inputSettings.TargetControls.Add(new TargetInput(tbName.UniqueID, true));
inputSettings.TargetControls.Add(new TargetInput(tbDescription.UniqueID, true));
}
}
<telerik:GridTemplateColumn HeaderText="Name" SortExpression="Name">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadTextBox ID="tbName" Width="60px" runat="server" Text='<%# Bind("Name")%>'>
</telerik:RadTextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="Description" SortExpression="Description">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Description") %>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadTextBox Width="245px" ID="tbDescription" runat="server" TextMode="MultiLine" Resize="Both" Text='<%# Bind("Description")%>' EmptyMessage="type description">
</telerik:RadTextBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>