• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 721
  • Last Modified:

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
0
mark_norge
Asked:
mark_norge
  • 3
  • 3
1 Solution
 
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
 
informaniacCommented:
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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
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
 
mark_norgeAuthor Commented:
Thanks for the help,

If placed in the load event and not in a Page.IsPostBack it works.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now