Bind formview to server side datatable

Dear exports,

I use a formview to display some details of a datagrid. The data is bind to labels
<asp:Label ID="Label2" runat="server"><%# Eval("ReportNumber")%></asp:Label> with a datasource defined client side.

The data is bind 1 on 1, but I need to make changes to some data before it's being bind / displayed. The filed usernames can for example contain multiple comma separated usernames of which the top 3 should be displayed under each other.

Is it possible to create a datatable server side (instead of client side) and bind this to the labels in the formview, this way I am able to create the datatable the way I need it?

Thanks in advance,
MB
mark_norgeAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

 
CodeCruiserCommented:
You can change your SQL query to only get first three users.
0
 
mark_norgeAuthor Commented:
Thanks CodeCruiser,

This is possible, but it's a bit more complicated. The string has the following structure username1#date1¤,username2#date2¤,username3#date3¤, etc. I have the following function which I use to split a comma separated string. Then I would need to adjust this to get out username (and preferably also date).

Regards,
MB

begin      
    declare @idx int      
    declare @slice varchar(8000)    

    select @idx = 1      
        if len(@String)<1 or @String is null  return      

    while @idx!= 0      
    begin      
        set @idx = charindex(@Delimiter,@String)      
        if @idx!=0      
            set @slice = left(@String,@idx - 1)      
        else      
            set @slice = @String      

        if(len(@slice)>0)  
            insert into @temptable(Items) values(@slice)      

        set @String = right(@String,len(@String) - @idx)      
        if len(@String) = 0 break      
    end  
return
0
 
Obadiah ChristopherCommented:
I'm not sure if I understood your question properly, but this is how you can create a DataTable server side.

Server Side DataTable
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
CodeCruiserCommented:
Another option is to not use a SQLDataSource and use a datatable. Then you can loop through the datatable, do any processing you want, and then bind it to formview.
0
 
mark_norgeAuthor Commented:
Thanks again for the replies,

Creating the datatable would be my preferred solution. I however have difficulties binding the datatable to the formview.

In the ascx I use (simplified, but I can confirm this is working with a client side datasource)
<table>
<tr>
        <td>
            <asp:formview id="ReportsView" runat="server" datakeynames="ReportID">
                <ItemTemplate>
                   <span class='title'>Voyage</span>
                    <asp:Label CssClass="info" ID="Label1" runat="server"><%# Eval("Voyage")%></asp:Label>
                  </ItemTemplate>
            </asp:formview>
        </td>
    </tr>
</table>

In the code behind I have

Public Class AlarmReportsDetails
    Inherits System.Web.UI.UserControl

    Public Property ReportID() As String
        Get
            If ViewState("ReportID") Is Nothing Then
                Return ""
            End If
            Return DirectCast(ViewState("ReportID"), String)
        End Get
        Set(ByVal value As String)

            ViewState("ReportID") = value
        End Set
    End Property

    Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
        MyBase.OnPreRender(e)
        Me.AlarmReportsDataSource.SelectParameters("ReportID").DefaultValue = Me.ReportID

        Me.DataBind()
    End Sub

End Class

I created a datatable (which was correctly filled) and try to bind it to the formview using me.formview.datasource=datatable. This however did not work.

Do you perhaps have an example where a datatable is bind to a formview and where I can see how the label or textbox values are bind client side (eval)?

Thanks in advance,
MB
0
 
CodeCruiserCommented:
As long as all the column names are same, all you need to do is fill the datatable and assign it as datasource to the formview. Do add the FormView1.DataBind() as well after assigning the source and do this in page load within a

If Not Page.IsPostBack

block.
0

Experts Exchange Solution brought to you by ConnectWise

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
 
mark_norgeAuthor Commented:
Thanks for the help,

If placed in the load event and not in a Page.IsPostBack it works.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.