Gridview Problem

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • nitindel
    New Member
    • Dec 2007
    • 67

    Gridview Problem

    Hi All,

    Please tell me any good site for Gridview control.(not for datagrid).

    I am facing error in fetching the values of the Bound columns in the gridview:

    lease tell me how should i fetch the value..of a bound column..??

    Below is the code.:

    Code:
    <asp:GridView ID="gvOU" runat="server" AllowPaging="True" AllowSorting="True" 
            AutoGenerateColumns="False" 
            PageSize="5" Width="484px" onrowcommand="gvOU_RowCommand" 
            onrowdatabound="gvOU_RowDataBound" onrowdeleting="gvOU_RowDeleting">
            <Columns>
            <asp:TemplateField headertext="Name" sortexpression="name" itemstyle-width="200" itemstyle-wrap="False">
            
       <headertemplate>
        
     <asp:LinkButton  id="btnName" commandargument="name" commandname="Sort" runat="server" Text="Name" />
        <div style="display:inline; margin-left:220px"></div> 
       </headertemplate>
       <itemtemplate>
        <asp:linkbutton commandname="Select" id="lnkName" runat="server"><%#DataBinder.Eval(Container.DataItem, "name").ToString()%></asp:linkbutton>              
       </itemtemplate>
    
    <ItemStyle Wrap="False" Width="200px"></ItemStyle>
      </asp:TemplateField>
    
    <asp:BoundField headertext="Level" datafield="level" visible="False" />
    <asp:BoundField headertext="LDAP Path" datafield="adspath" visible="False" />
    <asp:BoundField headertext="Category" datafield="objectCategory" visible="False" />
    <asp:BoundField headertext="Name" datafield="name" visible="false" />
    
    
            
                <asp:TemplateField HeaderText="Description">
                <HeaderTemplate>
                <asp:LinkButton id="btnDesc" commandargument="description" commandname="Sort" runat="server" Text="Description"/>
                </HeaderTemplate>
                <ItemTemplate>
                <asp:Label ID="litDesc" runat="server"><%#DataBinder.Eval(Container.DataItem, "description").ToString()%></asp:Label>
                </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Delete">
                <ItemTemplate>
                <asp:LinkButton ID="btnDelete" runat="server" CommandName="Delete" Text="Delete"></asp:LinkButton>
               
                </ItemTemplate>
                </asp:TemplateField>

    Also, my code behind that i have called for Gridview populate on page load is :

    Code:
     DataTable dt;
            CurrentContext con = (CurrentContext)Session["CurrentContext"];
            CurrentUser cuser = (CurrentUser)Session["CurrentUser"];
    
            if (Session[Constants.KEY_ADSEARCHCACHE] != null)
            {  //see if results are cached.
                dt = (DataTable)Session[Constants.KEY_ADSEARCHCACHE];
            }
            else
            { //get new results
    
                string filter = string.Empty;
                ContextLevel level = ContextLevel.CustomerUser;
    
                switch (con.ContextLevel)
                {  //get the correct filter for the different levels.
                    case ContextLevel.HostingDomain:
                        level = ContextLevel.Reseller;
                        filter = "(|(objectClass=organizationalUnit)(&(objectcategory=person)(samaccountname=*)))";
                        break;
                    case ContextLevel.Reseller:
                        level = ContextLevel.Customer;
                        filter = "(|(objectClass=organizationalUnit)(&(objectcategory=person)(samaccountname=*)))";
                        break;
                    case ContextLevel.Customer:
                        level = ContextLevel.CustomerUser;
                        filter = "(&(objectcategory=person)(samaccountname=*))";
                        break;
                }
    
                string ldapPath = con.LDAPPath;
    
                DirectoryEntry de = new DirectoryEntry(ldapPath, cuser.Domain + @"\" + cuser.SamAccountName, cuser.Password, AuthenticationTypes.Secure);
                DirectorySearcher ds = new DirectorySearcher(de, filter);
    
                //properties to load up
                ds.PropertiesToLoad.Add("name");
                ds.PropertiesToLoad.Add("adspath");
                ds.PropertiesToLoad.Add("objectCategory");
                ds.PropertiesToLoad.Add("description");
                ds.PropertiesToLoad.Add("mail");
                ds.PageSize = 100;
                ds.SearchScope = SearchScope.OneLevel;
    
                //Get the AD listing.
                SearchResultCollection results = ds.FindAll();
    
                dt = new DataTable();
    
                //Create columns from first search result.  Each property from results has its own column.
                foreach (string key in ds.PropertiesToLoad)
                {
                    dt.Columns.Add(key);
                }
                //Add level column because its not a AD property.
                dt.Columns.Add("Level");
    
                //create a new row for each result and each AD property
                object[] newRow;
                foreach (SearchResult result in results)
                {
                    newRow = new object[dt.Columns.Count];
                    for (int i = 0; i < newRow.Length - 1; i++)
                    {
                        if (result.Properties[dt.Columns[i].ColumnName] == null)
                        {//dont error if null, skip it.
                            newRow[i] = string.Empty;
                            continue;
                        }
                        if (result.Properties[dt.Columns[i].ColumnName].Count == 0) newRow[i] = string.Empty;
                        else newRow[i] = result.Properties[dt.Columns[i].ColumnName][0];
                    }
                    newRow[dt.Columns.Count - 1] = level; //put level value in last column
                    dt.Rows.Add(newRow);  //add the row to the table.
                }
    
                //store in cache
                Session.Add(Constants.KEY_ADSEARCHCACHE, dt);
    
            }
    
            //the dataview is bound to the grid.  It allows us to easily sort and search.
            DataView dv = new DataView(dt);
    
            //search code.  Only search if a string was passed.
            if (searchString != null && searchString != string.Empty) dv.RowFilter = "name like '%" + searchString + "%'";
    
    
            //sort the results
            string sortOrderValue;
    
            if (sortOrder)
            {  //translate our bool sortorder into terms the dataview needs.
                sortOrderValue = "ASC";
                
            }
            else
            {
                sortOrderValue = "DESC";
                
            }
    
            _sortColumnName = sortColumnName;
            dv.Sort = sortColumnName + " " + sortOrderValue;
    
            //bind
            gvOU.DataSource = dv;
            gvOU.DataBind(); </Columns>
            
            
            
        </asp:GridView>



    Actually i want to Fetch the values of all cells when i click the Delete Button in the Gridview.





    Thanks,

    Nitin Sharma
    Last edited by kenobewan; Aug 11 '08, 12:34 PM. Reason: Please use code tags
  • kenobewan
    Recognized Expert Specialist
    • Dec 2006
    • 4871

    #2
    How about telling us what the error was and which line number threw it? Thanks.

    Comment

    Working...