本帖最后由 Mr.Wu 于 2013-1-18 01:10 编辑
昨晚找了一晚论坛,以及在线示例,都没有看到相似的问题,现发贴出来,希望得到大家的帮助,谢谢。
问题如下:“分组2”模板列的Text值已经通过后台数据库绑定显示出来,现在手工在“分组1”文本框中输入值,如果该值和分组2中的值一致,就在“比较结果”模板列中显示“两组录入一致”,如果值不一致,就显示“两组录入不一致”,请问该如何解决?
期望的效果图如下:
源代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="grid_edit.aspx.cs" Inherits="FineUI.Examples.grid.grid_edit" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title></title>
<link href="../css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<x:PageManager ID="PageManager1" runat="server" />
<x:Grid ID="Grid1" ShowBorder="true" ShowHeader="true" Title="表格" Width="800px" runat="server"
DataKeyNames="Id,Name">
<Columns>
<x:TemplateField Width="60px">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</x:TemplateField>
<x:BoundField Width="100px" DataField="Name" DataFormatString="{0}" HeaderText="姓名" />
<x:TemplateField Width="60px" HeaderText="性别">
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# GetGender(Eval("Gender")) %>'></asp:Label>
</ItemTemplate>
</x:TemplateField>
<x:BoundField Width="60px" DataField="EntranceYear" HeaderText="入学年份" />
<x:CheckBoxField Width="60px" RenderAsStaticField="true" DataField="AtSchool" HeaderText="是否在校" />
<x:HyperLinkField HeaderText="所学专业" DataToolTipField="Major" DataTextField="Major"
DataTextFormatString="{0}" DataNavigateUrlFields="Major" DataNavigateUrlFormatString="http://gsa.ustc.edu.cn/search?q={0}"
DataNavigateUrlFieldsEncode="true" Target="_blank" ExpandUnusedSpace="True" />
<x:TemplateField HeaderText="分组1" Width="100px">
<ItemTemplate>
<asp:TextBox ID="tbxGroupName" runat="server" Width="80px" TabIndex='<%# Container.DataItemIndex + 10 %>'
></asp:TextBox>
</ItemTemplate>
</x:TemplateField>
<x:TemplateField HeaderText="分组2" Width="100px">
<ItemTemplate>
<asp:TextBox ID="tbxGroupName2" runat="server" Width="80px" Text='<%# Eval("Group") %>'></asp:TextBox>
</ItemTemplate>
</x:TemplateField>
<x:TemplateField HeaderText="比较结果" Width="100px">
<ItemTemplate>
<asp:Label runat="server" ID="lblCompare"></asp:Label>
</ItemTemplate>
</x:TemplateField>
</Columns>
</x:Grid>
<br />
请注意如何实现:
<ul>
<li>使用Tab键遍历所有的文本输入框(通过TextBox的TabIndex属性)</li>
<li>使用Enter键遍历所有的文本输入框(JavaScript函数registerEnterEvent)</li>
<li>点击输入框即可选中全部文本(JavaScript函数registerSelectEvent)</li>
</ul>
<br />
<br />
<br />
<x:Button ID="Button2" runat="server" Text="重新绑定表格">
</x:Button>
<br />
<x:Button runat="server" ID="Button1" Text="获取用户输入的分组值">
</x:Button>
<br />
<x:Label ID="labResult" EncodeText="false" runat="server">
</x:Label>
<br />
</form>
<script type="text/javascript">
var gridClientID = '<%= Grid1.ClientID %>';
function registerSelectEvent() {
var grid = X(gridClientID);
grid.el.select('.x-grid-tpl input').on('click', function (evt, el) {
el.select();
});
}
function registerEnterEvent() {
var grid = X(gridClientID);
grid.el.select('.x-grid-tpl input').on("keydown", function (evt, el) {
if (evt.getKey() == evt.ENTER) {
var nextRow = Ext.get(el).parent('.x-grid3-row').next();
if (nextRow) {
nextRow.query('.x-grid-tpl input')[0].select();
}
}
});
}
function onReady() {
var grid = X(gridClientID);
grid.on('viewready', function () {
registerSelectEvent();
registerEnterEvent();
});
}
function onAjaxReady() {
registerSelectEvent();
registerEnterEvent();
}
</script>
</body>
</html>
|