本文主要说一下一个DataList的数据源是二维数组的绑定的另一种解决方案。
问题是这样的:我需要把xml数据中的2个节点数据(图片途径和图片名称)读出来,一般这个问题的解决办法都是先把整个数据读出来,读到一个一维数组,然后在拆分成几个一维数组,在分别对它们操作。不过这种问题的前提是DataList只需要显示一条数据,如果要显示2条数据呢?难道绑定到二个一维数组吗?不可能。
解决办法是这样的,先按照常规方法使用DataBind()绑定一个数据(在一个数组里面),然后在模版列中加入一个Label,再用循环findcontrol()获取每一个节点,每获取一个给一个Label的Text赋值。如果有多条数据显示,也可以使用这个方法。这样就解决了多维数组的数据绑定问题。
代码如下:
private void dltStyleBind()
{
String[] SingleItemValue = this.LayoutToArray();//将xml所有数据读入一个数组中,后面把这个数组拆分。
String[] picfromxml = new String[SingleItemValue.Length/3];
for (int i = 0; i < SingleItemValue.Length/3; i++)
{
picfromxml[i] = SingleItemValue[(i * 3)+1];
}
this.dl_Pattern.DataSource = picfromxml;
this.dl_Pattern.DataBind();
String[] Layout = new String[SingleItemValue.Length/3];
for (int i = 0; i < SingleItemValue.Length/3; i++)
{
Layout[i] = SingleItemValue[i * 3];
}
System.Web.UI.WebControls.Label lbl_Name;
for (int i = 0; i < dl_Pattern.Items.Count; i++)
{
lbl_Name = (Label)dl_Pattern.Items[i].FindControl("l_Intro");
//lbl_Name = (Label) .FindControl("lbl_Name");
lbl_Name.Text = Layout[i];
}
}