473,401 Members | 2,125 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,401 software developers and data experts.

Expand/Collaspe Gridview > Childview

145 100+
I followed Rajib Ahmed's blog and implemented this and it works GREAT. Now that users are happy they want MORE. (They always want more. lol).

http://www.progtalk.com/ViewArticle.aspx?ArticleID=16

1. I am trying to implement "ShowAll" & "HideAll" button and I tried to follow his suggestion but No success. Can someone please help? I am working on a deadline. I would truly appreciated.

Expand|Select|Wrap|Line Numbers
  1. function HideShowAll(divid)
  2. {
  3.     try
  4.     {
  5.         var j = 0;
  6.         for( j = 0; j < 10; j++)
  7.         {
  8.             var dataid = divid + j;
  9.             HideShowPanel(dataid);
  10.         }
  11.     }
  12.     catch(e)
  13.     {}


Thanks
Jun 4 '09 #1
22 10342
Frinavale
9,735 Expert Mod 8TB
Dorandoran could you please post the code that you're using because I don't have want to read that entire article to to guess at what you're doing right or wrong...

What's the code for the HideShowPanel() method?
What are you currently doing to call the HideShowAll() method?
Jun 4 '09 #2
dorandoran
145 100+
the java file is attached.

1. I added this to default.aspx page. (and this is outside the gridview ctrl)
<asp:Hyperlink id="hlShowAll" runat="server" > Show All</asp:hyperlink>

2. I added this to default.aspx.cs page (on page)
this.hlShowAll.Attributes["onclick"]="ShowAll(''" + this.DataGrid1.ClientID + "'');";

Please let me know. Thanks for the help.


====== here is the area on the Rajib's post I was refering to = = = =
Here is how you can expand all the rows at once:
1. Drag a hyperlink column to the page, and give it the following id: HLShowALL
2. Add this code on the Page_Load method, on not postback where the BindData method is:
Expand|Select|Wrap|Line Numbers
  1. if ( !Page.IsPostBack )
  2. {
  3.       //Bind Master Details
  4.       BindData();
  5.       this.HLShowAll.Attributes["onclick"] = "ShowAll(''" + this.DataGrid1.ClientID + "'');";
  6. }

3. Add the following function to your javascript file:
Expand|Select|Wrap|Line Numbers
  1. function ShowAll(DataGridID)\
  2. {
  3.  
  4.     var j = 0;
  5.     for( j = 0; j < 10; j++)
  6.     {
  7.         var dataid = "uniquename" + j;
  8.         ShowPanel(dataid);
  9.     }
  10. }
  11.  
  12.  
  13. function HideAll(DataGridID)\
  14. {
  15.  
  16.     var j = 0;
  17.     for( j = 0; j < 10; j++)
  18.     {
  19.         var dataid = "uniquename" + j;
  20.         HidePanel(dataid);
  21.     }
  22. }
Attached Files
File Type: txt HGridScript.txt (4.0 KB, 520 views)
Jun 4 '09 #3
Frinavale
9,735 Expert Mod 8TB
Well the following code creates an ID by concatenating the word "uniquename" and the number stored in the variable "j".

Expand|Select|Wrap|Line Numbers
  1. function ShowAll(DataGridID)
  2. {
  3.  
  4.     var j = 0;
  5.     for( j = 0; j < 10; j++)
  6.     {
  7.         var dataid = "uniquename" + j;
  8.         ShowPanel(dataid);
  9.     }
  10. }
Do you have any rows or elements in your page (in your GridView) called "uniquename1","uniquename2",...?

Are you placing the rows into "panels"?

I'm looking at the ShowPanel() method here:
Expand|Select|Wrap|Line Numbers
  1. function ShowPanel(Panel)
  2. {
  3.     try
  4.     {
  5.         var ChosenPanel = document.all(Panel);
  6.         if ( ChosenPanel != null )
  7.         {
  8.             document.all(Panel).style.display = "block";
  9.         }
  10.     }
  11.     catch(e)
  12.     {}
  13. }
I wouldn't use the document.all() method.
Instead I would use the document.getElementByID() method because you are passing it the ID of the panel/div/row that you want to show ....Same goes for the HideShowPanel() method.


I have a feeling that this code isn't working because there are probably no elements called "uniquename1","uniquename2", etc on your page.

Why don't you post some of the HTML from your GridVIew (when it is rendered in the browser) so that we can take a closer look?
Jun 4 '09 #4
dorandoran
145 100+
Actually, this guy wrote the in such a way where he would create div (naming unique1,2,3) etc on run time. hope it's making sense.

Expand|Select|Wrap|Line Numbers
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  3. <HTML>
  4.     <HEAD>
  5.         <title>Datagrid Expand/Collaspe Example</title>
  6.         <script language="javascript" src="JavaScript/HGridScript.js"></script>
  7.     </HEAD>
  8.     <body>
  9.         <form name="Form1" method="post" action="Default.aspx" id="Form1">
  10. <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
  11. <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
  12. <input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
  13. <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTgzNTUyMjA2NA8WAh4ETW9kZQULU2hvd0RldGFpbHMWAgIBD2QWBAIBDxAPFgIeC18hRGF0YUJvdW5kZ2QQFQ0XLS0gU2VsZWN0IGEgTG9jYXRpb24gLS0bQWNvdXN0aWMgQ291bnRlcm1lYXN1cmUgS2l0KEFkdmFuY2VkIExpZmUgU3VwcG9ydCBQYWNrIChTS0Q0MjEwMTgzMiklQW1idWxhdG9yeSBNZWRpY2FsIFBhY2sgKFNFRzUyMTAwODAxKSBBdXRvbWF0ZWQgRXh0ZXJuYWwgRGVmaWJyaWxsYXRvciFDcmV3IENvbnRhbWluYXRpb24gUHJvdGVjdGlvbiBLaXQdQ3JldyBNZWRpY2FsIFJlc3RyYWludCBTeXN0ZW0oSE1TIEFuY2lsbGFyeSBTdXBwb3J0IFBhY2sgKFNFRzQ2MTE2OTU5KSFJbnRlcmltIFJlc2lzdGl2ZSBFeGVyY2lzZSBEZXZpY2UZSVNTIE1lZGljYWwgQWNjZXNzb3J5IEtpdAVPdGhlchlQQ0JBIFN1cHBsaWVzIChJTUFLIDEwMzApGVJlc3BpcmF0b3J5IFN1cHBvcnQgUGFjayAVDRctLSBTZWxlY3QgYSBMb2NhdGlvbiAtLQMzNzcCNDYBMgMzNzYCOTgCOTkDMTAwAzM4MwMzNzgDMzg3AzM3MQMxMDEUKwMNZ2dnZ2dnZ2dnZ2dnZxYBAgpkAgcPPCsACwEADxYIHghEYXRhS2V5cxYAHgtfIUl0ZW1Db3VudAICHglQYWdlQ291bnQCAR4VXyFEYXRhU291cmNlSXRlbUNvdW50AgJkFgJmD2QWBAICD2QWBmYPD2QWBh4Hb25jbGljawWGAUhpZGVTaG93UGFuZWwoJ3VuaXF1ZW5hbWUwJyk7IENoYW5nZUhMVGV4dCgnRGF0YUdyaWQxX19jdGwzX0NlbGxJbmZvMCcpOyBTZXRFeHBhbmRlZCgnRGF0YUdyaWQxX19jdGwzX0NlbGxJbmZvMCcsJ3R4dEV4cGFuZGVkRmllbGRzJyk7Hgtvbm1vdXNlb3ZlcgUYdGhpcy5zdHlsZS5jdXJzb3I9J2hhbmQnHgpvbm1vdXNlb3V0BRh0aGlzLnN0eWxlLmN1cnNvcj0naGFuZCdkAgEPDxYCHgRUZXh0BQMzOTBkZAICDw8WAh8JBesEQ3JldyBJdGVtPC90ZD48dHI+PHRkIGJnY29sb3I9J2Y1ZjVmNSc+PC90ZD48dGQgY29sc3Bhbj0nMSc+PERJViBpZD0ndW5pcXVlbmFtZTAnIHN0eWxlPSdESVNQTEFZOiBub25lOyBIRUlHSFQ6IGF1dG87Jz48dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIzIiBydWxlcz0iYWxsIiBib3JkZXJjb2xvcj0iI0NDQ0NDQyIgYm9yZGVyPSIxIiBzdHlsZT0iYm9yZGVyLWNvbG9yOiNDQ0NDQ0M7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7Zm9udC1mYW1pbHk6dGFob21hO2ZvbnQtc2l6ZTo4cHQ7Zm9udC13ZWlnaHQ6bm9ybWFsO3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyI+DQoJPHRyIHN0eWxlPSJjb2xvcjpXaGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOlN0ZWVsQmx1ZTtmb250LWZhbWlseTp0YWhvbWE7Zm9udC1zaXplOjhwdDtmb250LXdlaWdodDpib2xkOyI+DQoJCTx0ZD5OYW1lPC90ZD48dGQ+UGFydDwvdGQ+PHRkPlNlcmlhbDwvdGQ+PHRkPkV4cGlyYXRpb248L3RkPjx0ZD5RdWFudGl0eTwvdGQ+PHRkPkxvY2F0aW9uPC90ZD48dGQ+RmxpZ2h0PC90ZD48dGQ+U3RhdHVzX05hbWU8L3RkPg0KCTwvdHI+DQo8L3RhYmxlPjwvRElWPmRkAgMPZBYGZg8PZBYGHwYFhgFIaWRlU2hvd1BhbmVsKCd1bmlxdWVuYW1lMScpOyBDaGFuZ2VITFRleHQoJ0RhdGFHcmlkMV9fY3RsNF9DZWxsSW5mbzEnKTsgU2V0RXhwYW5kZWQoJ0RhdGFHcmlkMV9fY3RsNF9DZWxsSW5mbzEnLCd0eHRFeHBhbmRlZEZpZWxkcycpOx8HBRh0aGlzLnN0eWxlLmN1cnNvcj0naGFuZCcfCAUYdGhpcy5zdHlsZS5jdXJzb3I9J2hhbmQnZAIBDw8WAh8JBQMzOTJkZAICDw8WAh8JBe8ERGVmaWJyaWxsYXRvcjwvdGQ+PHRyPjx0ZCBiZ2NvbG9yPSdkM2QzZDMnPjwvdGQ+PHRkIGNvbHNwYW49JzEnPjxESVYgaWQ9J3VuaXF1ZW5hbWUxJyBzdHlsZT0nRElTUExBWTogbm9uZTsgSEVJR0hUOiBhdXRvOyc+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMyIgcnVsZXM9ImFsbCIgYm9yZGVyY29sb3I9IiNDQ0NDQ0MiIGJvcmRlcj0iMSIgc3R5bGU9ImJvcmRlci1jb2xvcjojQ0NDQ0NDO2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2ZvbnQtZmFtaWx5OnRhaG9tYTtmb250LXNpemU6OHB0O2ZvbnQtd2VpZ2h0Om5vcm1hbDt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsiPg0KCTx0ciBzdHlsZT0iY29sb3I6V2hpdGU7YmFja2dyb3VuZC1jb2xvcjpTdGVlbEJsdWU7Zm9udC1mYW1pbHk6dGFob21hO2ZvbnQtc2l6ZTo4cHQ7Zm9udC13ZWlnaHQ6Ym9sZDsiPg0KCQk8dGQ+TmFtZTwvdGQ+PHRkPlBhcnQ8L3RkPjx0ZD5TZXJpYWw8L3RkPjx0ZD5FeHBpcmF0aW9uPC90ZD48dGQ+UXVhbnRpdHk8L3RkPjx0ZD5Mb2NhdGlvbjwvdGQ+PHRkPkZsaWdodDwvdGQ+PHRkPlN0YXR1c19OYW1lPC90ZD4NCgk8L3RyPg0KPC90YWJsZT48L0RJVj5kZGSYUBo4hSUdSMjtKOd/hwD3Ec7TVw==" />
  14.  
  15. <script type="text/javascript">
  16. <!--
  17. var theForm = document.forms['Form1'];
  18. if (!theForm) {
  19.     theForm = document.Form1;
  20. }
  21. function __doPostBack(eventTarget, eventArgument) {
  22.     if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
  23.         theForm.__EVENTTARGET.value = eventTarget;
  24.         theForm.__EVENTARGUMENT.value = eventArgument;
  25.         theForm.submit();
  26.     }
  27. }
  28. // -->
  29. </script>
  30.  
  31.  
  32.             <select name="ddlCategory" onchange="javascript:setTimeout('__doPostBack(\'ddlCategory\',\'\')', 0)" language="javascript" id="ddlCategory" style="font-family:Tahoma;font-size:8pt;width:288px;">
  33.     <option value="-- Select a Location --">-- Select a Location --</option>
  34.     <option value="387">ISS Medical Accessory Kit</option>
  35.     <option selected="selected" value="387">Other</option>
  36.     <option value="371">PCBA Supplies (IMAK 1030)</option>
  37.     <option value="101">Respiratory Support Pack </option>
  38.  
  39. </select>
  40.             <br />
  41.  
  42.             <TABLE id="Table1" height="1" cellSpacing="0" cellPadding="0" width="100%" border="0">
  43.                 <TR>
  44.                     <TD noWrap align="left">
  45.                         <span id="LabelTitle" style="color:Blue;font-family:Tahoma;font-size:14pt;font-weight:bold;height:32px;width:160px;">Sub Locations</span><br />
  46.                         </TD>
  47.                 </TR>
  48.                 <TR>
  49.                     <TD noWrap align="left">
  50.                         <a id="hlShowAll">Show All TEST</a>
  51.                         <table cellspacing="0" cellpadding="3" rules="cols" bordercolor="#999999" border="1" id="DataGrid1" style="color:Black;background-color:White;border-color:#999999;border-width:1px;border-style:Solid;width:100%;border-collapse:collapse;">
  52.     <tr style="color:White;background-color:Black;font-weight:bold;">
  53.         <td>&nbsp;</td><td>Sub Locations</td>
  54.     </tr><tr align="left" valign="top" style="font-family:Tahoma;font-size:8pt;">
  55.         <td id="DataGrid1__ctl3_CellInfo0" onclick="HideShowPanel('uniquename0'); ChangeHLText('DataGrid1__ctl3_CellInfo0'); SetExpanded('DataGrid1__ctl3_CellInfo0','txtExpandedFields');" onmouseover="this.style.cursor='hand'" onmouseout="this.style.cursor='hand'"><a>+</a></td><td>Member Item</td><tr><td bgcolor='f5f5f5'></td><td colspan='1'><DIV id='uniquename0' style='DISPLAY: none; HEIGHT: auto;'><table cellspacing="0" cellpadding="3" rules="all" bordercolor="#CCCCCC" border="1" style="border-color:#CCCCCC;border-width:1px;border-style:solid;font-family:tahoma;font-size:8pt;font-weight:normal;width:100%;border-collapse:collapse;">
  56.     <tr style="color:White;background-color:SteelBlue;font-family:tahoma;font-size:8pt;font-weight:bold;">
  57.         <td>Name</td><td>Part</td><td>Serial</td><td>Expiration</td><td>Quantity</td><td>Location</td><td>Flight</td><td>Status_Name</td>
  58.     </tr>
  59. </table></DIV></td>
  60.     </tr><tr align="left" valign="top" style="background-color:#CCCCCC;font-family:Tahoma;font-size:8pt;">
  61.         <td id="DataGrid1__ctl4_CellInfo1" onclick="HideShowPanel('uniquename1'); ChangeHLText('DataGrid1__ctl4_CellInfo1'); SetExpanded('DataGrid1__ctl4_CellInfo1','txtExpandedFields');" onmouseover="this.style.cursor='hand'" onmouseout="this.style.cursor='hand'"><a>+</a></td><td>Defibrillator</td><tr><td bgcolor='d3d3d3'></td><td colspan='1'><DIV id='uniquename1' style='DISPLAY: none; HEIGHT: auto;'><table cellspacing="0" cellpadding="3" rules="all" bordercolor="#CCCCCC" border="1" style="border-color:#CCCCCC;border-width:1px;border-style:solid;font-family:tahoma;font-size:8pt;font-weight:normal;width:100%;border-collapse:collapse;">
  62.     <tr style="color:White;background-color:SteelBlue;font-family:tahoma;font-size:8pt;font-weight:bold;">
  63.         <td>Name</td><td>Part</td><td>Serial</td><td>Expiration</td><td>Quantity</td><td>Location</td><td>Flight</td><td>Status_Name</td>
  64.     </tr>
  65. </table></DIV></td>
  66.     </tr><tr align="center" style="color:Black;background-color:#999999;">
  67.         <td colspan="2"><span>1</span></td>
  68.     </tr>
  69. </table></TD>
  70.                 </TR>
  71.                 <TR>
  72.                     <TD noWrap align="left">
  73.                         </TD>
  74.                 </TR>
  75.                 <TR>
  76.                     <TD noWrap align="left" style="HEIGHT: 2px">
  77.                         </TD>
  78.                 </TR>
  79.                 <TR>
  80.                     <TD noWrap align="left">
  81.                         </TD>
  82.                 </TR>
  83.             </TABLE>
  84.  
  85. <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWDwLJyP6OAgLh2pKgCgLfw9S7BgKF1NDuCALttcDNBgLvtbjOBgKo/7aZAgL2tZjOBgL2tZTOBgLI9J+aAQKZs5TaAwKuvpAwAoXU7O4IAqPNne8PAqXNue8PKwTqF7qVX7cPwCrU7IoWdLE7F9E=" /></form>
  86.     </body>
  87. </HTML>
  88.  
  89.  
Jun 4 '09 #5
Frinavale
9,735 Expert Mod 8TB
Something's very wrong here....I'm not sure what you have that's causing your table to rendered as invalid HTML.

Please post your GridView markup (from your ASP code)
Jun 4 '09 #6
dorandoran
145 100+
Please see attached file. Thanks
Attached Files
File Type: zip Default.zip (3.5 KB, 218 views)
Jun 4 '09 #7
Frinavale
9,735 Expert Mod 8TB
I cannot download that due to network settings.
Please just post the ASP code for your GridView.
Jun 4 '09 #8
dorandoran
145 100+
Default.aspx

Expand|Select|Wrap|Line Numbers
  1. <%@ Page language="c#" Inherits="HGrid._Default" CodeFile="Default.aspx.cs" %>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  3. <HTML>
  4.     <HEAD>
  5.         <title>Datagrid Expand/Collaspe Example</title>
  6.         <script language="javascript" src="JavaScript/HGridScript.js"></script>
  7.     </HEAD>
  8.     <body>
  9.         <form id="Form1" method="post" runat="server">
  10.             <asp:DropDownList ID="ddlCategory" runat="server" Width="288px" Font-Names="Tahoma"  
  11.             Font-Size="8pt" DataValueField="location_id" DataTextField="location_name"
  12.              OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" AutoPostBack="true" >
  13.             </asp:DropDownList>
  14.             <br />
  15.  
  16.             <TABLE id="Table1" height="1" cellSpacing="0" cellPadding="0" width="100%" border="0">
  17.                 <TR>
  18.                     <TD noWrap align="left">
  19.                         <asp:Label id="LabelTitle" runat="server" ForeColor="Blue" Font-Bold="True" Font-Names="Tahoma"
  20.                             Font-Size="14pt" Height="32px" Width="160px">Sub Locations</asp:Label><br />
  21.                         </TD>
  22.                 </TR>
  23.                 <TR>
  24.                     <TD noWrap align="left">
  25.                         <asp:HyperLink ID="hlShowAll" runat="server">Show All TEST</asp:HyperLink>
  26.                         <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Width="100%" BorderColor="#999999"
  27.                             BorderStyle="Solid" BorderWidth="1px" BackColor="White" CellPadding="3" GridLines="Vertical"
  28.                             AllowPaging="True" ForeColor="Black">
  29.                             <SelectedItemStyle Font-Bold="True" HorizontalAlign="Left" ForeColor="White" VerticalAlign="Top" BackColor="#000099"></SelectedItemStyle>
  30.                             <EditItemStyle HorizontalAlign="Left" VerticalAlign="Top"></EditItemStyle>
  31.                             <AlternatingItemStyle HorizontalAlign="Left" BackColor="#CCCCCC"></AlternatingItemStyle>
  32.                             <ItemStyle Font-Size="8pt" Font-Names="Tahoma" HorizontalAlign="Left" VerticalAlign="Top"></ItemStyle>
  33.                             <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>
  34.                             <FooterStyle BackColor="#CCCCCC"></FooterStyle>
  35.  
  36.                             <Columns>
  37.                                 <asp:HyperLinkColumn Text="+"></asp:HyperLinkColumn>
  38.                                 <asp:BoundColumn DataField="subCatID" ReadOnly="True" Visible="False" HeaderText="ID"></asp:BoundColumn>
  39.                                 <asp:BoundColumn DataField="subCatName" HeaderText="Sub Locations"></asp:BoundColumn>
  40.                             </Columns>
  41.  
  42.                             <PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>
  43.                         </asp:DataGrid></TD>
  44.                 </TR>
  45.                 <TR>
  46.                     <TD noWrap align="left">
  47.                         <asp:TextBox id="txtExpandedFields" runat="server" Visible="false"  Width="0px" Font-Names="Tahoma" Font-Size="8pt"></asp:TextBox></TD>
  48.                 </TR>
  49.                 <TR>
  50.                     <TD noWrap align="left" style="HEIGHT: 2px">
  51.                         </TD>
  52.                 </TR>
  53.                 <TR>
  54.                     <TD noWrap align="left">
  55.                         </TD>
  56.                 </TR>
  57.             </TABLE>
  58.         </form>
  59.     </body>
  60. </HTML>
  61.  
  62.  













=========== default.aspx.cs ==================

Expand|Select|Wrap|Line Numbers
  1.  
  2. using System;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Web;
  8. using System.Web.SessionState;
  9. using System.Web.UI;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.HtmlControls;
  12.  
  13. namespace HGrid
  14. {
  15.     public partial class _Default : System.Web.UI.Page
  16.     {
  17.         protected void Page_Load(object sender, System.EventArgs e)
  18.         {
  19.             if ( !Page.IsPostBack )
  20.             {
  21.                 //Bind Location
  22.                 FillCategeries();
  23.                 //Bind Master Details
  24.                 BindData();
  25.  
  26.                 //this.hlShowAll.Attributes["onClick"] = "ShowAll(''" + this.DataGrid1.ClientID + "'');";
  27.             }
  28.             else
  29.             {
  30.                 //If it is a postback that is not from the grid, we have to expand the rows
  31.                 //the user had expanded before.  We have to check first who called this postback
  32.                 //by checking the Event Target
  33.                 if ( Request["__EVENTTARGET"] != null)
  34.                 {
  35.                     string strEventTarget = Request["__EVENTTARGET"].ToString().ToLower();
  36.                     if ( strEventTarget.IndexOf("datagrid1") == -1)
  37.                     {
  38.                         //Expanded what ever the user had expanded by Setting Mode
  39.                         //which will be used in ItemDataBound method.
  40.                         ViewState["Mode"] = "ShowDetails";
  41.                         //Not caused by datagrid
  42.                         //We need to rebind data and generate scripts.
  43.                         BindData();
  44.                     }
  45.                     else
  46.                     {
  47.                         ViewState["Mode"] = null;
  48.                     }
  49.                 }
  50.  
  51.             }
  52.         }
  53.  
  54.         private void BindData()
  55.         {
  56.             if ((ddlCategory.SelectedValue == "-- Select a Location --") | (ddlCategory.SelectedValue == "0"))
  57.             { }
  58.             else
  59.             {
  60.                 int scID = Convert.ToInt32(ddlCategory.SelectedValue);
  61.                 if (scID != null)
  62.                 {
  63.                     clsDataBindGrid fsc = new clsDataBindGrid();
  64.                     DataGrid1.DataSource = fsc.FillSubCategories(scID);
  65.                     DataGrid1.DataBind();
  66.                 }
  67.             }
  68.         }
  69.  
  70.         void FillCategeries()
  71.         {
  72.             ddlCategory.SelectedIndex=0;
  73.             clsDataBindGrid fc = new clsDataBindGrid();
  74.             ddlCategory.DataSource = fc.FillCategories();
  75.             ddlCategory.DataBind();
  76.             ddlCategory.Items.Insert(0, new ListItem("-- Select a Location --"));
  77.             ddlCategory.SelectedIndex = 0;
  78.  
  79.         }
  80.  
  81.         #region Web Form Designer generated code
  82.         override protected void OnInit(EventArgs e)
  83.         {
  84.             //
  85.             // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  86.             //
  87.             InitializeComponent();
  88.             base.OnInit(e);
  89.         }
  90.  
  91.         /// <summary>
  92.         /// Required method for Designer support - do not modify
  93.         /// the contents of this method with the code editor.
  94.         /// </summary>
  95.         private void InitializeComponent()
  96.         {    
  97.             this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
  98.             this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
  99.  
  100.         }
  101.         #endregion
  102.  
  103.         #region Datagrid Methods
  104.         private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  105.         {
  106.             if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
  107.             {
  108.                 clsDataBindGrid dsProducts = new clsDataBindGrid();
  109.  
  110.                 //For better performance, do not use a grid and bind labels, textbox's, etc...
  111.                 DataGrid NewDg = new DataGrid();
  112.                 NewDg.AutoGenerateColumns = true;
  113.                 NewDg.Width = Unit.Percentage(100.00);                
  114.                 NewDg.DataSource = dsProducts.FillProducts(Convert.ToInt32(e.Item.Cells[1].Text)); 
  115.                 NewDg.DataBind();
  116.  
  117.                 SetProps(NewDg);
  118.  
  119.                 System.IO.StringWriter sw = new System.IO.StringWriter();
  120.                 System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
  121.                 NewDg.RenderControl( htw );
  122.  
  123.                 string DivStart = "<DIV id='uniquename" + e.Item.ItemIndex.ToString() +"' style='DISPLAY: none; HEIGHT: auto;'>";
  124.                 string DivBody = sw.ToString();
  125.                 string DivEnd = "</DIV>";
  126.                 string FullDIV = DivStart + DivBody + DivEnd;
  127.  
  128.                 int LastCellPosition = e.Item.Cells.Count - 1;
  129.                 int NewCellPosition = e.Item.Cells.Count - 2;
  130.  
  131.                 e.Item.Cells[0].ID = "CellInfo" + e.Item.ItemIndex.ToString();
  132.  
  133.                 if ( ViewState["Mode"] != null && ViewState["Mode"].ToString() == "ShowDetails")
  134.                 {
  135.                     if ( this.txtExpandedFields.Text.IndexOf(e.Item.Cells[0].ClientID) != -1 )
  136.                     {
  137.                         //make it expand.
  138.                         FullDIV = FullDIV.Replace("DISPLAY: none","DISPLAY: block");
  139.                         e.Item.Cells[0].Text = "<A>-</A>";
  140.                     }
  141.                 }
  142.  
  143.                 //match color
  144.                 if (e.Item.ItemType == ListItemType.Item)
  145.                 {
  146.                     e.Item.Cells[LastCellPosition].Text = e.Item.Cells[LastCellPosition].Text + "</td><tr><td bgcolor='f5f5f5'></td><td colspan='" + NewCellPosition +"'>" + FullDIV;
  147.                 }
  148.                 else
  149.                 {
  150.                     e.Item.Cells[LastCellPosition].Text = e.Item.Cells[LastCellPosition].Text + "</td><tr><td bgcolor='d3d3d3'></td><td colspan='" + NewCellPosition +"'>" + FullDIV;
  151.                 }
  152.                 e.Item.Cells[0].Attributes["onclick"] = "HideShowPanel('uniquename" + e.Item.ItemIndex.ToString() + "'); ChangeHLText('" + e.Item.Cells[0].ClientID + "'); SetExpanded('" + e.Item.Cells[0].ClientID + "','" + txtExpandedFields.ClientID + "');";
  153.                 e.Item.Cells[0].Attributes["onmouseover"] = "this.style.cursor='hand'";
  154.                 e.Item.Cells[0].Attributes["onmouseout"] = "this.style.cursor='hand'";
  155.  
  156.             }
  157.         }
  158.  
  159.         private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
  160.         {
  161.             //clean up expanded records.
  162.             txtExpandedFields.Text = "";
  163.             DataGrid1.CurrentPageIndex = e.NewPageIndex;
  164.             BindData();
  165.         }
  166.  
  167.         public void SetProps(System.Web.UI.WebControls.DataGrid DG)
  168.         {
  169.             /****************************************************************************/
  170.             DG.Font.Size = 8;
  171.             DG.Font.Bold = false;
  172.             DG.Font.Name = "tahoma";
  173.  
  174.             /*******************************Professional 2**********************************/
  175.             //Border Props 
  176.             DG.GridLines = GridLines.Both;
  177.             DG.CellPadding = 3;
  178.             DG.CellSpacing = 0;
  179.  
  180.             DG.BorderColor = System.Drawing.Color.FromName("#CCCCCC");
  181.             DG.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(1);
  182.  
  183.  
  184.             //Header Props
  185.             DG.HeaderStyle.BackColor = System.Drawing.Color.SteelBlue;
  186.             DG.HeaderStyle.ForeColor = System.Drawing.Color.White;
  187.             DG.HeaderStyle.Font.Bold = true;
  188.             DG.HeaderStyle.Font.Size = 8;
  189.             DG.HeaderStyle.Font.Name = "tahoma";
  190.  
  191.             DG.ItemStyle.BackColor = System.Drawing.Color.LightSteelBlue;
  192.  
  193.         }
  194.  
  195.         #endregion
  196.  
  197.         protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e)
  198.         {
  199.             if ((ddlCategory.SelectedValue == "-- Select a Location --") | (ddlCategory.SelectedValue == "0"))
  200.             {
  201.                 Response.Redirect("default.aspx");
  202.             }
  203.             else
  204.             {
  205.                 int scID = Convert.ToInt32(ddlCategory.SelectedValue);
  206.                 clsDataBindGrid fsc = new clsDataBindGrid();
  207.                 DataGrid1.DataSource = fsc.FillSubCategories(scID);
  208.                 DataGrid1.DataBind();
  209.             }
  210.         }
  211.  
  212.     }
  213. }
  214.  
  215.  
  216.  
Jun 4 '09 #9
Frinavale
9,735 Expert Mod 8TB
I ran into a few problems with FireFox/Visual Studio.
What you have here is hard for me to read.

No wonder your HTML is invalid.
You have a Table, and within the Table you have a GridView (another table) and within the GridView you have more GridViews (more tables).....

It's going to be very hard to track down the missing tags and other invalid HTML.

I would strongly recommend you upgrade to using a GridView, and use a TemplateField to accomplish what you want. (And stay away from using tables to lay out your page)
Jun 4 '09 #10
dorandoran
145 100+
I basically took this guys code and change few things here and there insead of re-inventing the wheel.
http://www.progtalk.com/ViewArticle.aspx?ArticleID=54
Jun 4 '09 #11
Frinavale
9,735 Expert Mod 8TB
Honestly I think that re-inventing the wheel is much easier than trying to look at that article. The article is using too many controls and is bloating your page.

Since it's easy for me to "re-invent the wheel", here's a Very simple example of expanding and collapsing details. (Note how little clutter there is in the ASP, HTML and Server code compared to the article you were following)

I'm using a GridView (not a DataGrid) along with TemplateFields

Expand|Select|Wrap|Line Numbers
  1. <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm3.aspx.vb" Inherits="ScratchPad.WebForm3" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head runat="server">
  6.     <title></title>
  7.  
  8.     <script type="text/javascript">
  9.         function ExpandCollapse(detailsSectionID) {
  10.             var detailsSection = document.getElementById(detailsSectionID);
  11.             if (detailsSection) {
  12.                 if (detailsSection.style.display == "none") {
  13.                     detailsSection.style.display = "block";
  14.                 } else {
  15.                     detailsSection.style.display = "none";
  16.                 }
  17.             }
  18.         }
  19.     </script>
  20.  
  21. </head>
  22. <body>
  23.     <form id="form1" runat="server">
  24.     <div>
  25.         <asp:GridView ID="ItemsGrid" runat="server" AutoGenerateColumns="false">
  26.             <Columns>
  27.                 <asp:TemplateField HeaderText="Expand Details">
  28.                     <ItemTemplate>
  29.                         <asp:HyperLink ID="ExpandCollapse" runat="server" Text="+/-"></asp:HyperLink>
  30.                     </ItemTemplate>
  31.                 </asp:TemplateField>
  32.                 <asp:TemplateField HeaderText="Items">
  33.                     <ItemTemplate>
  34.                         <div style="width: 100%; text-align: center">
  35.                             <%#Eval("subCatName") %></div>
  36.                         <asp:Panel ID="ItemDetails" runat="server" Style="display: none">
  37.                             <table border="1px">
  38.                                 <thead>
  39.                                     <tr>
  40.                                         <th>
  41.                                             ID
  42.                                         </th>
  43.                                         <th>
  44.                                             Name
  45.                                         </th>
  46.                                     </tr>
  47.                                 </thead>
  48.                                 <tbody>
  49.                                     <tr>
  50.                                         <td>
  51.                                             <%#Eval("subCatID")%>
  52.                                         </td>
  53.                                         <td>
  54.                                             <%#Eval("subCatName") %>
  55.                                         </td>
  56.                                     </tr>
  57.                                 </tbody>
  58.                             </table>
  59.                         </asp:Panel>
  60.                     </ItemTemplate>
  61.                 </asp:TemplateField>
  62.             </Columns>
  63.         </asp:GridView>
  64.     </div>
  65.     </form>
  66. </body>
  67. </html>
Sorry but I work in VB:
Expand|Select|Wrap|Line Numbers
  1. Partial Public Class WebForm3
  2.     Inherits System.Web.UI.Page
  3.     Private _gridViewDataSource As DataView
  4.  
  5.     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  6.         Dim someTable As New DataTable
  7.         someTable.Columns.Add("subCatID")
  8.         someTable.Columns.Add("subCatName")
  9.  
  10.         For i As Integer = 0 To 5
  11.             Dim dr As DataRow
  12.             dr = someTable.NewRow
  13.             dr("subCatID") = "subCatID" + i.ToString
  14.             dr("subCatName") = "subCatName" + i.ToString
  15.             someTable.Rows.Add(dr)
  16.         Next
  17.         _gridViewDataSource = New DataView(someTable)
  18.         ItemsGrid.DataSource = _gridViewDataSource
  19.         ItemsGrid.DataBind()
  20.     End Sub
  21.  
  22.     Private Sub ItemsGrid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles ItemsGrid.RowDataBound
  23.         Dim expandCollapseLink As HyperLink = CType(e.Row.FindControl("ExpandCollapse"), HyperLink)
  24.         Dim detailsSection As Panel = CType(e.Row.FindControl("ItemDetails"), Panel)
  25.         If expandCollapseLink IsNot Nothing AndAlso detailsSection IsNot Nothing Then
  26.             expandCollapseLink.Attributes.Add("onclick", "ExpandCollapse('" + detailsSection.ClientID + "');")
  27.         End If
  28.  
  29.     End Sub
  30. End Class


Basically what I did was use TemplateFields to configure the data into elements that I could actually use with JavaScript.....

I added JavaScript to the page that expands and collapses the data that I want to expand and collapse.

In my VB Code I implement a method that handles the GridView's RowDataBound event...at which time I grab the hyperlink that controls the expand/collapse feature and add the JavaScript that should be called when the link is clicked.


Take a look at my code and feel free to ask me any questions you want to about what I'm doing.
Jun 4 '09 #12
Frinavale
9,735 Expert Mod 8TB
Here's the C# Translation:
(
can't test it here so it may be a little invalid.
oh yeah, the ASP stuff stays the same
)

Expand|Select|Wrap|Line Numbers
  1.    private DataView _gridViewDataSource;
  2.  
  3.     protected void Page_Load(Object sender,  System.EventArgs e) 
  4.    {
  5.         DataTable someTable = New DataTable();
  6.         someTable.Columns.Add("subCatID");
  7.         someTable.Columns.Add("subCatName");
  8.         Integer i;
  9.          for(i= 0; i<= 5;i++)
  10.         {
  11.             DataRow dr;
  12.             dr = someTable.NewRow();
  13.             dr["subCatID"] = "subCatID" + i.ToString();
  14.             dr["subCatName"] = "subCatName" + i.ToString();
  15.             someTable.Rows.Add(dr);
  16.         }
  17.         _gridViewDataSource = new DataView(someTable);
  18.         ItemsGrid.DataSource = _gridViewDataSource;
  19.         ItemsGrid.DataBind();
  20.     }
  21.  
  22.     Private void ItemsGrid_RowDataBound(Objectsender, System.Web.UI.WebControls.GridViewRowEventArgs e )
  23.     {
  24.         HyperLink expandCollapseLink = (HyperLink)e.Row.FindControl("ExpandCollapse");
  25.         Panel  detailsSection = (Panel)e.Row.FindControl("ItemDetails");
  26.         If(expandCollapseLink != null && detailsSection != null)
  27.         {
  28.             expandCollapseLink.Attributes.Add("onclick", "ExpandCollapse('" + detailsSection.ClientID + "');");
  29.         }
  30.  
  31.     }
  32.  
Jun 4 '09 #13
Frinavale
9,735 Expert Mod 8TB
Now that I have a working simple solution I've added the JavaScript required to expand and collapse all of the detail sections on the page.

The back end server code doesn't have to change for this to work....you just need to change the JavaScript to this:

Expand|Select|Wrap|Line Numbers
  1.     <script type="text/javascript">
  2.         function ExpandCollapse(detailsSectionID) {
  3.             var detailsSection = document.getElementById(detailsSectionID);
  4.             if (detailsSection) {
  5.                 if (detailsSection.style.display == "none") {
  6.                     detailsSection.style.display = "block";
  7.                 } else {
  8.                     detailsSection.style.display = "none";
  9.                 }
  10.             }
  11.         }
  12.         function ExpandAll() {
  13.             var allDivElements = document.getElementsByTagName("div");
  14.             var numElements = allDivElements.length;
  15.  
  16.             var pattern=new RegExp("ItemDetails")
  17.             for (var i = 0; i < numElements; i++) {
  18.                 if (pattern.test(allDivElements[i].id)) {
  19.                     allDivElements[i].style.display = "block";
  20.                 }
  21.             }
  22.  
  23.         }
  24.         function CollapseAll() {
  25.             var allDivElements = document.getElementsByTagName("div");
  26.             var numElements = allDivElements.length;
  27.  
  28.             var pattern = new RegExp("ItemDetails")
  29.             for (var i = 0; i < numElements; i++) {
  30.                 if (pattern.test(allDivElements[i].id)) {
  31.                     allDivElements[i].style.display = "none";
  32.                 }
  33.             }
  34.         }    
  35.     </script>
Jun 4 '09 #14
dorandoran
145 100+
Sorry for being late. I left work early, went to Gym, now home. Long day. Thanks for all the code. I am about to try and will post a feedback.

AGAIN, THANKS A LOOOTTTTT FOR YOUR HELP, TIME AND BEING GENEROUS.
Jun 4 '09 #15
dorandoran
145 100+
Still testing and i will post the outcome....
Jun 5 '09 #16
dorandoran
145 100+
Okay, I ran it and here are the result
1. I need to be able to populated child grid or panel when I click on +/-
2. +/- signs are not being hyperlinked
3. The parent products shows up
Jun 5 '09 #17
Frinavale
9,735 Expert Mod 8TB
Oh! You need to post back to the server!
You never stated that requirement.

Is there any particular reason you don't want to send all the data down at once?
Jun 5 '09 #18
Frinavale
9,735 Expert Mod 8TB
Dorandoran,

You should consider using a Select Button instead of a hyperlink column.

When the user clicks this button the GridView's SelectedIndex Changed event will fire. At that time you can populate some control that you're using to display the additional information with the dynamic data.

It will be difficult to add dynamic controls to the GridView (validation problems and other issues that happen when controls are generated then deleted and another control created sometimes with the same name but in some other place)...unless you are very familiar with using dynamic controls in ASP.NET I would recommend trying to stay away from dynamically adding ASP.NET controls to your page/GridView.

It would be a lot easier for you now (and later when you're debugging/maintaining your system) if you didn't dynamically add Controls to the page.

I'm not saying that your page can't be dynamic. I'm just saying that you should avoid using dynamic controls. You can have a control that is used to display dynamic content and that can change all the time if need be. But dynamic controls are a real pain in the.....

Look into the controls that are available to you to make your life easier.

There is a DetailsView Class that you may be interested in looking into using. You may be able to one of these to the GridView in a TemplateField and use it to display the additional data when the user clicks the "select" button (bind the DetailsView to a DataSource only when the row has been Selected). I've never used a DetailsView before and so I don't know if you can do this but I'd give it a try because it's going to be easier to maintain in the future than sifting through code that dynamically adds controls to the page :)

To show or hide all of the details sections you'll have to loop through every row in your DataGrid (in your C# code) and bind the "DetailsView" or whatever control you decide to use to the data that it needs to bound to.

(It makes a lot more sense to me to do this without having to post back to the C# code to do this....just do it once when you bind your GridView to the DataSource and let the JavaScript handle what's displayed...there would be a lot need to send requests to the server and so less resources would be used)

Cheers

-Frinny
Jun 5 '09 #19
dorandoran
145 100+
Hello Frinny,

1. Some users would like to see all the records (parent and child) upon clicking one button that does not have reside in the grid control. It can stay outside (form or div)
2. Also, in the detail view (for child). users want to be able to sort, filter on few columns, search, edit and add.

I think this is little bit more complex than I originally thought. I am looking at SATAY'S blog (http://www.codeproject.com/KB/aspnet...dGridView.aspx) and it seems i can take his and add more to it.

What do you suggest?
Jun 5 '09 #20
Frinavale
9,735 Expert Mod 8TB
I just glanced at the article and it looks a lot more promising than the first one you tried to follow.

:)
Jun 5 '09 #21
Frinavale
9,735 Expert Mod 8TB
@dorandoran
This can be done either in the client JavaScript code or the C# server code.

It all depends on which you think would be best.

I tend to leave the responsibility of handling things that have to do with the User Interface (like displaying data etc) up to the client code and use JavaScript for this purpose. It just makes sense for Client stuff like UI interaction to be handled by client side code. It keeps a clear boundary between the UI layer and the Business layer so it's easier to maintain and there are less calls made to the server which uses less resources (making the call to the server) and makes your web app seem faster.

But if you aren't comfortable using JavaScript, then having the server do this will be easier for you (JavaScript is a completely different language).

@dorandoran
It certainly does sound complicated.
In fact I think that I would hide the first Parent GridView and display only the child view when the user selects something.

If its complicated for you to explain, think about how complicated it's going to be to use.....
Jun 5 '09 #22
dorandoran
145 100+
Thank you Frinny for being so nice and helping me. I will start the Satay's sample and will open another post so i can start fresh (in the event i need some assistance, i m sure i will, lol)..

Again thanks a loottttttt
Jun 5 '09 #23

Sign in to post your reply or Sign up for a free account.

Similar topics

0
by: Joey | last post by:
Hello all, I am trying to read a directory listing into a string and then use that data, along with some other data, to create HTML for display in a gridview row. A sample item in the string...
1
by: syl | last post by:
Hello I am trying to create a "easy to use" gridview with filters (dropdownlist in headers), sorting...and much more.... In order to do that, i prefer to use a objectdatasource (ODS) beacause...
0
by: Tina | last post by:
Once I link up a .xsd tableadapter to an object data source to a gridview then put some template and button columns in the gridview I'm all set. works and looks great. But if I need to modify the...
4
by: GaryDean | last post by:
I have an objectdatasource reading a dataset and I have a gridview using that objectdatasource (at design time). It binds fine but I need to clear it. myGridView.DataSource = null:...
8
by: gerry | last post by:
The PagerSettings.Visible property is not being handled properly by the GridView control. The value assigned to this property is not applied until after a postback. Simplest test : .aspx...
0
by: Jeff | last post by:
hi asp.net 2.0 I have a GridView which in it's FooterTemplate contain textboxes for adding new rows to the GridView. I thought that was cool, until I tested the GridView without any data....
1
by: =?Utf-8?B?SkI=?= | last post by:
Hi, I have two buttons that are within the template field, of a gridview. The gridview is in a web control. I am able to deletage most of the events that the gridview fires, with the code...
3
by: dorandoran | last post by:
I followed this blog and I was able to utilized the search option for gridview. http://www.c-sharpcorner.com/Blogs/BlogDetail.aspx?BlogId=825 Now I created another button "btnClearSearch" and I...
7
by: dorandoran | last post by:
I used this article (http://www.codeproject.com/KB/webforms/EditNestedGridView.aspx) to accomplish expand/collaspe grid. I also added a search and it works. but i need to be now automatically expand...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.