比如xml如下
<users> <user id="01">a</userid>
<user id="02">b</userid>
<user id="03">c</userid>
<user id="04">d</userid>
</users>
sql表有如下字段
id name
01 huang1
02 huang2
03 huang3
04 huang4
我想在datagrid里绑定两列
a huang1
b huang2
c huang3
d huang4
各位高手请教怎样做?
以上只是1:1关系,如是1:n或m:n呢?
<users> <user id="01">a</userid>
<user id="02">b</userid>
<user id="03">c</userid>
<user id="04">d</userid>
</users>
sql表有如下字段
id name
01 huang1
02 huang2
03 huang3
04 huang4
我想在datagrid里绑定两列
a huang1
b huang2
c huang3
d huang4
各位高手请教怎样做?
以上只是1:1关系,如是1:n或m:n呢?
然后关联2张表,生成rows集合作为datagrid的数据源
另外也可以考虑把你的xml串传到存储过程里面去处理
比较罗嗦一点
<user id="01">a</user>
<user id="02">b</user>
<user id="03">c</user>
<user id="04">d</user>
</users>
you can try<%@ Import Namespace="System.Xml"%>
<%@ Import Namespace="System.Data"%>
<script language="C#" runat="server">
DataTable dt = null;DataTable GetData()
{
if (dt == null)
{
dt = new DataTable();
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("name", typeof(string));
string[] ids = {"01","02","03","04","01"};
string[] names = {"huang1","huang2","huang3","huang4","huang5"};
for (int i=0; i < ids.Length; i++)
{
DataRow dr = dt.NewRow();
dr["id"] = ids[i];
dr["name"] = names[i];
dt.Rows.Add(dr);
}
}
return dt;
}void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string sFile = Server.MapPath("TestUser.xml");
XmlDocument doc = new XmlDocument();
doc.Load(sFile); DataGrid1.DataSource = doc.DocumentElement.ChildNodes;
DataGrid1.DataBind();
}
}DataView GetSqlData(string id)
{
DataView dv = new DataView(GetData());
dv.RowFilter = "id = '" + id + "'";
return dv;
}
</script><form runat="server">
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn HeaderText="a">
<ItemTemplate>
<%# ((XmlElement)Container.DataItem).InnerText%>
</ItemTemplate>
</asp:TemplateColumn> <asp:TemplateColumn HeaderText="name">
<ItemTemplate>
<asp:DataGrid id="DataGrid2" runat="server" AutoGenerateColumns="false"
DataSource='<%# GetSqlData(((XmlElement)Container.DataItem).Attributes["id"].Value)%>'>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "name")%>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid> <asp:Button runat="server" Text="Refresh" />
</form>