datagrid三层嵌套的代码

betterwy (阿拉真主,我赞美你)
找了半天也没有,如果您手边有这方面的代码,请贴一个,或者给个地址,我会好好研究学习的,谢谢!
Nobody helps me,then I have to ref this:
http://www.denisbauer.com/ASPNETControls/NestedHierarGridDemo.aspx 

// the main javascript code
function HierarGrid_toggleRow(sender)
{
 if (sender == null)
  return;
 var state = 1;
 // if the hidden row has not already been generated,clone the panel into a new row
 var existingRow = window.document.getElementById(sender.id + "showRow");
 if (existingRow == null)
 {
  // getting a reference to the table
  var table = GetParentElementByTagName(sender,"TABLE");
  var index = GetParentElementByTagName(sender,"TR").sectionRowIndex + 1;
  //concatenate name of hidden panel => replace "Icon" from sender.id with "Panel"/n
  rowDivName = HierarGrid_ReplaceStr(sender.id,"Icon","Panel");
  var rowDiv = window.document.getElementById(rowDivName);
  // adding new row to table
  var newRow = table.insertRow(index);
  newRow.id = sender.id + "showRow";
  // adding new cell to row
  var newTD = document.createElement("TD");
  if (table.rows[0].cells[0].colSpan > 1)
   newTD.colSpan = table.rows[0].cells[0].colSpan;
  else
   newTD.colSpan = table.rows[0].cells.length;
  var myTD = newRow.appendChild(newTD);
  //clone Panel into new cell
  var copy = rowDiv.cloneNode(false);
  copy.innerHTML = rowDiv.innerHTML;
  copy.style.display = "";
  myTD.innerHTML = copy.innerHTML;
  rowDiv.parentNode.removeChild(rowDiv);
  sender.src = HierarGrid_ReplaceStr(sender.src,"plus","minus");
  state = 1;
 }
 else
 {
  if (existingRow.style.display == "none")
  {
   existingRow.style.display = "";
   sender.src = HierarGrid_ReplaceStr(sender.src,"plus","minus");
   state = 1;
  }
  else
  {
   existingRow.style.display = "none";
   sender.src = HierarGrid_ReplaceStr(sender.src,"minus","plus");
   state = 0;
  }
 }
// ChangeRowState(sender,state);
}

function HierarGrid_ReplaceStr(orgString,findString,replString)
{
 pos = orgString.lastIndexOf(findString);
 return orgString.substr(0,pos) + replString + orgString.substr(pos + findString.length);
}

function GetParentElementByTagName(element,tagName)
{
 var element = element;
 while(element.tagName != tagName)
  element = element.parentNode;
 return element;
}

function ChangeRowState(sender,state)
{
 var table = GetParentElementByTagName(sender,"TABLE");
 var hiddenfield = table.getAttribute("ExpandedClientIDsName");
 var rowStates = document.getElementByName(hiddenfield)[0].value;
 
 if (state == 1)
 {
  if (rowStates.indexOf(sender.id) == -1)
   rowStates += ", " + sender.id;
 }
 else if(state == 0)
  rowState = rowStates.replace(sender.id,"");
 document.getElementByName(hiddenfield)[0].value = rowStates;
}


// the main C# code,use page control
 
       <asp:DataGrid ID="grdModel" OnItemDataBound="grdModel_ItemDataBound" DataKeyField="ProjectId"
        BorderColor="#999999" BorderWidth=1 Width="100%" CellPadding=3 CellSpacing=0 AutoGenerateColumns=False Runat=server>
        <HeaderStyle HorizontalAlign=Center CssClass="gridHeader"></HeaderStyle>
        <Columns>
         <asp:TemplateColumn>
          <HeaderStyle HorizontalAlign=Left CssClass="gridHeader"></HeaderStyle>
          <ItemTemplate>
           <img id="ParentIcon_<%# DataBinder.Eval(Container.DataItem, "ProjectId") %>" src="<%=Page.ResolveUrl("~/Images/plus.gif")%>"
            onClick="javascript:HierarGrid_toggleRow(this);">
           <div id="ParentPanel_<%# DataBinder.Eval(Container.DataItem,"ProjectId") %>" style="display:none" width="90%">
            <p><b></b><br/><br/>
             <it:DisplayMechDetails ID="ctlDisplayMechDetails" OnRebindCommand="DetailRebind" Runat="Server" />
            </p>
           </div>
          </ItemTemplate>
         </asp:TemplateColumn>
         <asp:HyperLinkColumn DataNavigateUrlField="ProjectId" DataNavigateUrlFormatString="~/Reports/MechDetail.aspx?pid={0}"
          DataTextField="ModelName" HeaderText="Model">
          <HeaderStyle HorizontalAlign=Left CssClass="gridHeader"></HeaderStyle>
         </asp:HyperLinkColumn>
         <asp:TemplateColumn HeaderText="Owner">
          <HeaderStyle HorizontalAlign=Left CssClass="gridHeader"></HeaderStyle>
          <ItemTemplate>
           &nbsp;<%# DataBinder.Eval(Container.DataItem,"Owner") %>
          </ItemTemplate>
         </asp:TemplateColumn>
         <asp:TemplateColumn HeaderText="Other">
          <HeaderStyle HorizontalAlign=Left CssClass="gridHeader"></HeaderStyle>
          <ItemTemplate>
           <asp:Label ID="lblOwnerId" Runat=server />
          </ItemTemplate>
         </asp:TemplateColumn>         
        </Columns>
       </asp:DataGrid>

 void grdModel_ItemDataBound(Object s,DataGridItemEventArgs e)
{
 if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 {
  Mech objmech = (Mech)e.Item.DataItem;
  Control ctlDisplayMechDetails = (Control)e.Item.FindControl("ctlDisplayMechDetails");
  DataGrid grdDetail = (DataGrid)ctlDisplayMechDetails.FindControl("grdDetail");
  grdDetail.DataSource = MechDetail.GetDetailsById(objmech.ProjectId);
  grdDetail.DataBind();
  
  Label lblOwnerId = (Label)e.Item.FindControl("lblOwnerId");
  ITUserCollection users = Mech.GetOwners(objmech.OwnerId);
  foreach (ITUser u in users)  lblOwnerId.Text += u.DisplayName + "<br/>";
 }
}<%# DataBinder.Eval(Container.DataItem,"OwnerTW") %>

// user control code
<%@ Control Language="c#" %>
<%@ Import Namespace="ASPNET.MVT.BusinessLogicLayer" %>
<%@ Register TagPrefix="it" TagName="ListFiles" Src="~/UserControls/ListFiles.ascx" %>
<script runat="server">
  //*********************************************************************
       //
       // DisplayMechDetails.ascx
       //
       // This user control displays a list of mechdetails.
       //
       //*********************************************************************
      
private MechDetailCollection _DataSource;
public event EventHandler RebindCommand;

void OnRebindCommand(EventArgs e) {
 if (RebindCommand != null)
  RebindCommand(this,e);
}

public MechDetailCollection DataSource {
 get { return _DataSource; }
 set { _DataSource = value; }
}

public void DataBind() {
 grdDetail.DataSource = _DataSource;
 grdDetail.DataBind();
 
 if (grdDetail.Items.Count > 0) {
  grdDetail.Visible = true;
 } else {
  grdDetail.Visible = false;
 }
}

void grdDetail_ItemDataBound(Object s,DataGridItemEventArgs e) {
 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
  int detailId = Convert.ToInt32(grdDetail.DataKeys[(int)e.Item.ItemIndex]);
  DataGrid grdQuestion = (DataGrid)e.Item.FindControl("grdQuestion");
  grdQuestion.DataSource = MechQuestion.GetQuestionsById(detailId);
  grdQuestion.DataBind();
  if (grdQuestion.Items.Count > 0)  grdQuestion.Visible = true;
  else grdQuestion.Visible = false;
  
  DataList lstFiles = (DataList)e.Item.FindControl("lstFiles");
  lstFiles.DataSource = MechAttach.GetFilesById(detailId);
  lstFiles.DataBind();
 }
}
</script>

<asp:DataGrid ID="grdDetail" OnItemDataBound="grdDetail_ItemDataBound"
 BorderColor="#999999" BorderWidth="1" Width="100%" CellPadding="3" CellSpacing="0" AutoGenerateColumns="False"
 DataKeyField="DetailId" Runat="server">
 <HeaderStyle CssClass="gridHeader"></HeaderStyle>
 <Columns>
  <asp:TemplateColumn>
   <HeaderStyle HorizontalAlign="Left" CssClass="gridHeader"></HeaderStyle>
   <ItemTemplate>
    <img id="Icon_<%# DataBinder.Eval(Container.DataItem, "DetailId") %>" src="<%=Page.ResolveUrl("~/Images/plus.gif")%>" onClick="javascript:HierarGrid_toggleRow(this);">
    <div id="Panel_<%# DataBinder.Eval(Container.DataItem, "DetailId") %>" style="display:none">
     <p><b>分析</b><br/><br/>
      <asp:DataGrid ID="grdQuestion" Width="98%" AutoGenerateColumns="False" AlternatingItemStyle-BackColor="white"
       Cellspacing="0" CellPadding="3" BorderColor="#999999" BorderWidth="1" BackColor="#eeeeee"
       Runat="server">
       <HeaderStyle CssClass="Content" />
       <Columns>
        <asp:TemplateColumn HeaderText="Description">
         <ItemTemplate>
          &nbsp;<%# DataBinder.Eval(Container.DataItem,"Content") %>
         </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="SolutionShort">
         <ItemTemplate>
          &nbsp;<%# DataBinder.Eval(Container.DataItem,"SolutionShort") %>
         </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="SolutionLong">
         <ItemTemplate>
          &nbsp;<%# DataBinder.Eval(Container.DataItem,"SolutionLong") %>
         </ItemTemplate>
        </asp:TemplateColumn>
       </Columns>
      </asp:DataGrid>
      <br/>
     </p>
    </div>
   </ItemTemplate>
  </asp:TemplateColumn>
  <asp:HyperLinkColumn DataNavigateUrlField="DetailId" DataNavigateUrlFormatString="~/Reports/MechDetailNew.aspx?did={0}"
   DataTextField="PartNumber" SortExpression="PartNumber" HeaderText="Number">
   <HeaderStyle HorizontalAlign="Left" CssClass="gridHeader"></HeaderStyle>
  </asp:HyperLinkColumn>
  <asp:TemplateColumn SortExpression="PartName" HeaderText="Name">
   <HeaderStyle HorizontalAlign="Left" CssClass="gridHeader"></HeaderStyle>
   <ItemTemplate>
    &nbsp;<%# DataBinder.Eval(Container,"DataItem.PartName") %>
   </ItemTemplate>
  </asp:TemplateColumn>
  <asp:TemplateColumn SortExpression="Stage" HeaderText="Stage">
   <HeaderStyle HorizontalAlign="Left" CssClass="gridHeader"></HeaderStyle>
   <ItemTemplate>
    &nbsp;<%# DataBinder.Eval(Container,"DataItem.StageSelect") %>
   </ItemTemplate>
  </asp:TemplateColumn>
  <asp:TemplateColumn SortExpression="BuidOn" HeaderText="日期">
   <HeaderStyle HorizontalAlign="Left" CssClass="gridHeader"></HeaderStyle>
   <ItemTemplate>
    &nbsp;<%# DataBinder.Eval(Container,"DataItem.BuildOn") %>
   </ItemTemplate>
  </asp:TemplateColumn>
  <asp:TemplateColumn SortExpression="Status" HeaderText="Status">
   <HeaderStyle HorizontalAlign="Left" CssClass="gridHeader"></HeaderStyle>
   <ItemTemplate>
    &nbsp;<%# DataBinder.Eval(Container,"DataItem.StatusClose") %>
   </ItemTemplate>
  </asp:TemplateColumn>
  <asp:TemplateColumn SortExpression="ExpectOn" HeaderText="完成日期">
   <HeaderStyle HorizontalAlign="Left" CssClass="gridHeader"></HeaderStyle>
   <ItemTemplate>
    &nbsp;<%# DataBinder.Eval(Container,"DataItem.ExpectOn") %>
   </ItemTemplate>
  </asp:TemplateColumn>
  <asp:TemplateColumn HeaderText="附件">
   <HeaderStyle HorizontalAlign="Left" CssClass="gridHeader"></HeaderStyle>
   <ItemTemplate>
    <asp:DataList ID="lstFiles" Runat="server" RepeatDirection="Vertical" Width="100%" CellPadding="0"
     DataKeyField="AttId" CellSpacing="0">
     <ItemTemplate>
      <a href="/mvt/Doc/<%# DataBinder.Eval(Container,"DataItem.Mid")%>/<%# DataBinder.Eval(Container,"DataItem.Smid")%>/<%# DataBinder.Eval(Container,"DataItem.FrealFile") %>" target=_blank>
       <%# DataBinder.Eval(Container,"DataItem.Fdesc") %>
       .<%# DataBinder.Eval(Container,"DataItem.Fexts") %></a>
     </ItemTemplate>
    </asp:DataList>
   </ItemTemplate>
  </asp:TemplateColumn>
 </Columns>
</asp:DataGrid>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值