Custom Gridview Controlhttp://forums.asp.net/t/1034684.aspx/1?Custom+Gridview+ControlFri, 13 Oct 2006 13:34:54 -040010346841426970http://forums.asp.net/p/1034684/1426970.aspx/1?Custom+Gridview+ControlCustom Gridview Control <p>I am building a Custom Web control which inherits the gridview.&nbsp; I am doing this so I can add a defaultsortexpression for the gridview so I can set the sort order before any of the header links are clicked.&nbsp; I am connecting my custom gridview to an objectdatasoruce, which should allow support sorting, however, when I look at the page in design view, the custom gridview has a message saying that &quot;There was an error rendering the control.&nbsp; The data source does not support sorting&quot;&nbsp; I am posting my code below.&nbsp; I'd appreciate any assistance.&nbsp; Thanks in advance!</p> <p><strong>Custom Control Code in a file I have named CustGridView.vb</strong></p> <pre class="prettyprint">Imports Microsoft.VisualBasic Namespace CustControls Public Class CustGridView Inherits System.Web.UI.WebControls.GridView &lt;ComponentModel.Browsable(True)&gt; _ &lt;ComponentModel.Description(&quot;Default Sort BLOCKED EXPRESSION&quot;)&gt; _ &lt;ComponentModel.Category(&quot;Behavior&quot;)&gt; _ Public Property DefaultSortExpression() As String Get Dim TheDefaultSortExpression As String = CType(Me.ViewState(&quot;DefaultSortExpression&quot;), String) If TheDefaultSortExpression Is DBNull.Value Then Return String.Empty End If Return TheDefaultSortExpression End Get Set(ByVal value As String) Me.ViewState(&quot;DefaultSortExpression&quot;) = value End Set End Property &lt;ComponentModel.Browsable(True)&gt; _ &lt;ComponentModel.Description(&quot;Default Sort BLOCKED EXPRESSION&quot;)&gt; _ &lt;ComponentModel.Category(&quot;Behavior&quot;)&gt; _ Public Property DefaultSortDirection() As SortDirection Get Dim TheDefaultSortDirection As Object = Me.ViewState(&quot;SortDirection&quot;) If TheDefaultSortDirection Is Nothing Then Return WebControls.SortDirection.Ascending End If Return CType(TheDefaultSortDirection, SortDirection) End Get Set(ByVal value As SortDirection) End Set End Property Protected Overrides Function CreateDataSourceSelectArguments() As DataSourceSelectArguments Dim TheDataSourceSelectArguments As DataSourceSelectArguments = MyBase.CreateDataSourceSelectArguments If String.IsNullOrEmpty(TheDataSourceSelectArguments.SortExpression) And String.IsNullOrEmpty(Me.DefaultSortExpression) = False Then TheDataSourceSelectArguments.SortExpression = Me.DefaultSortExpression If Me.DefaultSortDirection = WebControls.SortDirection.Ascending Then TheDataSourceSelectArguments.SortExpression &#43;= &quot; ASC&quot; Else TheDataSourceSelectArguments.SortExpression &#43;= &quot; DESC&quot; End If End If Return TheDataSourceSelectArguments End Function End Class End Namespace</pre><pre class="prettyprint"><span class="kwd"><strong>.aspx code I am putting the custom gridview in named t.aspx </strong></span></pre><pre class="prettyprint"><span class="kwd">&nbsp;&nbsp;<pre class="prettyprint">&lt;<span class="tag">%@</span><span class="attr"> Page Language=</span><span class="attrv">&quot;VB&quot;</span><span class="attr"> MasterPageFile=</span><span class="attrv">&quot;~/Site.master&quot;</span><span class="attr"> AutoEventWireup=</span><span class="attrv">&quot;false&quot;</span><span class="attr"> CodeFile=</span><span class="attrv">&quot;t.aspx.vb&quot;</span><span class="attr"> Inherits=</span><span class="attrv">&quot;t&quot;</span><span class="attr"> title=</span><span class="attrv">&quot;Untitled Page&quot;</span> %&gt; &lt;<span class="tag">%@</span><span class="attr"> Register namespace=</span><span class="attrv">&quot;CustControls&quot;</span><span class="attr"> TagPrefix=</span><span class="attrv">&quot;scc&quot;</span> %&gt; &lt;<span class="tag">asp:Content</span><span class="attr"> ID=</span><span class="attrv">&quot;Content1&quot;</span><span class="attr"> ContentPlaceHolderID=</span><span class="attrv">&quot;MainContent&quot;</span><span class="attr"> Runat=</span><span class="attrv">&quot;Server&quot;</span>&gt; &lt;<span class="tag">p</span>&gt; &lt;<span class="tag">scc:CustGridView</span><span class="attr"> runat=</span><span class="attrv">&quot;server&quot;</span> <span class="attr"> ID=</span><span class="attrv">&quot;MyTest&quot;</span> <span class="attr"> AllowPaging=</span><span class="attrv">&quot;true&quot;</span> <span class="attr"> AllowSorting=</span><span class="attrv">&quot;true&quot;</span> <span class="attr"> DefaultSortExpression=</span><span class="attrv">&quot;ColorDesc&quot;</span> <span class="attr"> DefaultSortDirection=</span><span class="attrv">&quot;ascending&quot;</span> <span class="attr"> AutoGenerateColumns=</span><span class="attrv">&quot;false&quot;</span> <span class="attr"> DataSourceID=</span><span class="attrv">&quot;dsColors&quot;</span><span class="attr"> DataKeyNames=</span><span class="attrv">&quot;ColorID&quot;</span> <span class="attr"> EnableViewState=</span><span class="attrv">&quot;false&quot;</span> <span class="attr"> PageSize=</span><span class="attrv">&quot;20&quot;</span> <span class="attr"> PagerSettings-Mode=</span><span class="attrv">&quot;NextPreviousFirstLast&quot;</span> <span class="attr"> PagerSettings-NextPageText=</span><span class="attrv">&quot;&nbsp;&nbsp;Next&nbsp;&nbsp;&quot;</span> <span class="attr"> PagerSettings-PreviousPageText=</span><span class="attrv">&quot;Previous&quot;</span> <span class="attr"> PagerStyle-ForeColor=</span><span class="attrv">&quot;#000000&quot;</span> <span class="attr"> PagerSettings-Position=</span><span class="attrv">&quot;TopAndBottom&quot;</span>&gt; &lt;/<span class="tag">scc:CustGridView</span>&gt; &lt;/<span class="tag">p</span>&gt; &lt;<span class="tag">asp:ObjectDataSource</span><span class="attr"> ID=</span><span class="attrv">&quot;dsColors&quot;</span><span class="attr"> runat=</span><span class="attrv">&quot;server&quot;</span><span class="attr"> SelectMethod=</span><span class="attrv">&quot;GetColors&quot;</span><span class="attr"> TypeName=</span><span class="attrv">&quot;NJC_BLL&quot;</span>&gt; &lt;/<span class="tag">asp:ObjectDataSource</span>&gt; &lt;/<span class="tag">asp:Content</span>&gt;</pre>&nbsp;</span></pre><pre class="prettyprint"><span class="kwd"></span>&nbsp;</pre>&nbsp; 2006-10-12T18:56:55-04:001427390http://forums.asp.net/p/1034684/1427390.aspx/1?Re+Custom+Gridview+ControlRe: Custom Gridview Control <p>Why don't you want to use the GridView.Sort method to set the initial sort direction?</p> <p><a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.sort.aspx">http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.sort.aspx</a></p> 2006-10-13T01:48:48-04:001427771http://forums.asp.net/p/1034684/1427771.aspx/1?Re+Custom+Gridview+ControlRe: Custom Gridview Control Thanks, that is what I'm looking for, however, what event should I fire this method on? 2006-10-13T09:43:56-04:001427884http://forums.asp.net/p/1034684/1427884.aspx/1?Re+Custom+Gridview+ControlRe: Custom Gridview Control <p>&nbsp;</p> <p>To set the initial sort direction, you can fire this on Page_Load. Something like this</p> <p>&nbsp;if (! IsPostback) {<br> &nbsp; GridView.Sort(....);<br> }</p> 2006-10-13T12:16:57-04:001427955http://forums.asp.net/p/1034684/1427955.aspx/1?Re+Custom+Gridview+ControlRe: Custom Gridview Control Thanks! 2006-10-13T13:34:54-04:00