silvelight中操作html页面元素
2008-06-10 10:37
267 查看
在上一篇文章(silverlight与javascript交互操作 )中,我们通过属性绑定([ScriptableType])的方式
进行了js与silverlight之间的互操作.
其实只就实现这个DEMO而言,还有更加直接简单的方式,就是使用:
HtmlPage.Document.GetElementById()
首先,我们需要建立一个项目silverlight项目, 名称为: HtmlDOM
还是将上一篇中的EmployeeInfo.cs拷贝到当前项目下,并将其修改成如下内容:
而xaml代码还是延用上一篇文章中的内容如下:
而下面的就是相应的page.xaml.cs代码,如下(相关内容见注释):
而相应的aspx页面就不用再多写什么js脚本了.大家下载本DEMO中的源码后一看便知:)
好了,今天的内容就到这里了:)
源码下载链接,请点击这里:)
进行了js与silverlight之间的互操作.
其实只就实现这个DEMO而言,还有更加直接简单的方式,就是使用:
HtmlPage.Document.GetElementById()
首先,我们需要建立一个项目silverlight项目, 名称为: HtmlDOM
还是将上一篇中的EmployeeInfo.cs拷贝到当前项目下,并将其修改成如下内容:
public class EmployeeInfo { /// <summary> /// 雇员编号 /// </summary> public int EmployeeNo { get; set; } /// <summary> /// 雇员名称 /// </summary> public string EmployeeName { get; set; } /// <summary> /// 地址 /// </summary> public string Address { get; set; } } /// <summary> /// 雇员事件参数(用于完成与js绑定事件参数) /// </summary> public class EmployeeInfoEventArgs : EventArgs { public EmployeeInfo employeeInfo { get; set; } } /// <summary> /// 雇员信息管理类 /// </summary> public class EmployeeManager { public IEnumerable<EmployeeInfo> employeeList; /// <summary> /// 初始化会员数据 /// </summary> public EmployeeManager() { //初始化雇员数据 employeeList = new List<EmployeeInfo>() { new EmployeeInfo(){EmployeeNo = 10001, EmployeeName = "张三" , Address = "北京"}, new EmployeeInfo(){EmployeeNo = 10002, EmployeeName = "李四" , Address = "北京"}, new EmployeeInfo(){EmployeeNo = 10003, EmployeeName = "王五" , Address = "北京"}, new EmployeeInfo(){EmployeeNo = 10004, EmployeeName = "马六" , Address = "北京"}, new EmployeeInfo(){EmployeeNo = 10005, EmployeeName = "王大麻子" , Address = "北京"}, new EmployeeInfo(){EmployeeNo = 10006, EmployeeName = "王宝强" , Address = "北京"}, new EmployeeInfo(){EmployeeNo = 10007, EmployeeName = "王蛋蛋" , Address = "北京"}, new EmployeeInfo(){EmployeeNo = 10008, EmployeeName = "王五强" , Address = "北京"} }; } /// <summary> /// 获取指定数量的雇员数据 /// </summary> /// <param name="count">要获取的雇员信息数</param> /// <returns></returns> public IEnumerable<EmployeeInfo> GetEmployeeList(int count) { return (from e in employeeList select new EmployeeInfo { EmployeeNo = e.EmployeeNo, EmployeeName = e.EmployeeName, Address = e.Address }).Take(count); } }
而xaml代码还是延用上一篇文章中的内容如下:
<Grid x:Name="LayoutRoot" Background="White"> <Grid.RowDefinitions> <RowDefinition Height="300" /> </Grid.RowDefinitions> <my:DataGrid x:Name="EmployeeList" Grid.Row="1" AutoGenerateColumns="True" Height="280" Margin="5,5,5,5" AlternatingRowBackground="AliceBlue" RowBackground="BlanchedAlmond"> </my:DataGrid> </Grid>
而下面的就是相应的page.xaml.cs代码,如下(相关内容见注释):
public partial class Page : UserControl { public Page() { InitializeComponent(); this.Loaded += Page_Loaded; this.EmployeeList.BeginningCellEdit += new EventHandler<DataGridCellEditingCancelEventArgs>(EmployeeList_BeginningCellEdit); } void Page_Loaded(object sender, RoutedEventArgs e) { //创建"加载数据"的button并绑定相应的onclick事件 HtmlElement button = CreateElement("input"); button.SetAttribute("type", "button"); button.SetAttribute("value", "加载数据"); button.AttachEvent("onclick", new EventHandler<HtmlEventArgs>(button_Click)); GetElement("EmployeeManage").AppendChild(button); } void button_Click(object sender, HtmlEventArgs e) { LoadData(7);//先取出7条数据 } /// <summary> /// 击编辑雇员列表信息事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void EmployeeList_BeginningCellEdit(object sender, DataGridCellEditingCancelEventArgs e) { //当有要编辑的信息时 if (EmployeeList.SelectedItem != null) { EmployeeInfo employeeInfo = EmployeeList.SelectedItem as EmployeeInfo; GetElement("employeeNo").SetAttribute("value", employeeInfo.EmployeeNo.ToString()); GetElement("employeeName").SetAttribute("value", employeeInfo.EmployeeName); GetElement("address").SetAttribute("value", employeeInfo.Address); } } /// <summary> /// 获取指定ID的HTML元素 /// </summary> /// <param name="ElementID"></param> /// <returns></returns> HtmlElement GetElement(string ElementID) { return HtmlPage.Document.GetElementById(ElementID); } /// <summary> /// 创建指定tagname的元素 /// </summary> /// <param name="tagname"></param> /// <returns></returns> HtmlElement CreateElement(string tagname) { return HtmlPage.Document.CreateElement("input"); } //这里必须声明是public,否则js调用该方法时会报错 public void LoadData(int count) { //加载指定数据的雇员信息 EmployeeList.ItemsSource = new EmployeeManager().GetEmployeeList(count); } }
而相应的aspx页面就不用再多写什么js脚本了.大家下载本DEMO中的源码后一看便知:)
好了,今天的内容就到这里了:)
源码下载链接,请点击这里:)
相关文章推荐
- silvelight中操作html页面元素
- [导入]silvelight中操作html页面元素
- jquery的常用操作(操作html页面的Dom对象的元素)
- 【HTML/JS,JQuery】JQuery操作iframe父页面与子页面的元素与方法
- Silverlight2.0中与Html页面元素互操作.
- 父页面操作嵌套iframe子页面的HTML标签元素
- htmlparser操作bean类提取html页面元素
- ASP.NET对HTML页面元素进行权限控制(一)
- ASP.NET对HTML页面元素进行权限控制(一)
- JQuery操作iframe父页面与子页面的元素与方法
- appium获取手机端页面元素的操作_05
- html页面中运用CSS为层(div)元素添加滚动条
- html超链接href设置技巧和动态创建页面元素技巧
- jquery操作iframe父级页面元素的方法
- html页面中js动态新建svg元素
- jQuery操作html页面的标签即html页面(其实不只是针对jQuery,而是针对整个JavaScript领域,即JavaScript脚本或者函数操作html页面的标签)的工作原理是什么?
- 如何让动态创建的页面元素响应用户事件 (HTML/javascript/jQuery/Ajax/DOM)
- html页面中不能有两个相同id的元素吗?
- WebDriver拾级而上·之四 操作页面元素
- HTML页面加载完后,根据内容调整<textarea>元素的高度