首页  ·  知识 ·  移动开发
silvelight中操作html页面元素
代震军  博客园   Wphone  编辑:德仔   图片来源:网络
首先,我们需要建立一个项目silverlight项目, 名称为: HtmlDOM 还是将上一篇中的EmployeeInfo.cs拷贝到当前项目下,并
首先,我们需要建立一个项目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);
}
}
 
本文作者:代震军 来源:博客园
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读