Re: Web Application Project - ReportViewer Control
- From: stcheng@xxxxxxxxxxxxxxxxxxxx (Steven Cheng[MSFT])
- Date: Mon, 03 Sep 2007 04:36:03 GMT
Thanks for your followup AG,
The "strong typed" I mentioned here means the component class much have a
strong property to repesent a certain table column. For example, the typed
DataTable will contains many properties such as:
TypedDataTableRow.Column1, TypedDataTableRow.Column2 to supply the
database fields
However, for untyped datatable, you have to use DataRow["columnname"] to
access them. Visual Studio IDE's report datasource can only reflect
strong-typed properties, that's why untyped DataSet/DataTable can not work
here.
For creating a separate typed DataTable, I just use it to design the rdlc
report at design-time, after you finished the RDLC report design, you can
switch to use the original untyped one. So far this is a workaround
approach I can get.
Also, for the limitation here, it really make the client report designing
quite inconvenient, I will recommend you submit this issue to the feedback
center so as to inform the dev team. We really appreciate your feedback on
this:
https://connect.microsoft.com/feedback/default.aspx?SiteID=210&wa=wsignin1.0
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.
Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
--------------------
Reply-To: "AG" <NOSPAMa-giam@xxxxxxxxxxxxxxxxx>
From: "AG" <NOSPAMa-giam@xxxxxxxxxxxxxxxxx>
considered
Steven,
A columns in a datatable derived from a SQL strored procedure contain the
schema info, so I don't understand why the datatable would not be
typed.to
Anyway, are you saying that the only way to create a typed datatable, is
create a separate xsd file and the loop through all my rows and add themto
the new datatable??the
That seems very inefficient.
I might be better off creating a separate reports project and deploy to
report server and use remote processing.project
--
AG
Email: discuss at adhdata dot com
"Steven Cheng[MSFT]" <stcheng@xxxxxxxxxxxxxxxxxxxx> wrote in message
news:C9moaL46HHA.6140@xxxxxxxxxxxxxxxxxxxxxxxxx
Thanks for your reply AG,
Now, I've seen the main problem here, your datatable are untyped. This
does
be a big problem as untyped DataTable do not have strong-typed properties
that can be recognized by the design-time DataSource window.
So far I think you may consider the following approach:
** use code to write out the XML Schema for your untyped
dataset/datatable,
here is a demo code snippet to do this:
=========
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet("myds");
DataTable dt = new DataTable("tb1");
dt.Columns.Add("id", typeof(long));
dt.Columns.Add("name", typeof(string));
dt.PrimaryKey = new DataColumn[]{dt.Columns["id"]};
dt.Rows.Add(1, "item1");
dt.Rows.Add(2, "item2");
dt.WriteXmlSchema("dt_scheme.xsd");
}
}
================
**after that, add the output xsd file(generarted above) into your
newand let the VS IDE create a typed dataset/datatable for you.
** use the new generated type dataset/datatable type in your business
class
to create the fake method(be used by datasource window)
How do you think? If you have any further questions on this, please feel
free to let me know.
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
This posting is provided "AS IS" with no warranties, and confers no
rights.
--------------------
Reply-To: "AG" <NOSPAMa-giam@xxxxxxxxxxxxxxxxx>
From: "AG" <NOSPAMa-giam@xxxxxxxxxxxxxxxxx>
stored
Thanks Steven,
Now I see where my problem lies.
My class is returning an un-typed datatable which is generated from a
procedure.untyped
Can you point me so an example of creating a typed-datatable from an
one?
--
AG
Email: discuss at adhdata dot com
"Steven Cheng[MSFT]" <stcheng@xxxxxxxxxxxxxxxxxxxx> wrote in message
news:Vm2Lr0H6HHA.5608@xxxxxxxxxxxxxxxxxxxxxxxxx
Thanks for your reply AG,
Sorry that I haven't noticed you're using VB.NET.
Here is a VB.NET code snippet demonstrate some on this:
#in the following class, suppose GetDataTable() is the originally
function which directly return the TypedDataTable, now you can add a
TDS.rpt_tableDataTable();butfunction that return the array of "TypedDataRow", like the
"GetDataRecords"
function:
===============
Public Class MyDataSource
Public Function GetDataTable() As SimpleDS.UsersDataTable
Dim dt As New SimpleDS.UsersDataTable
dt.Rows.Add(1, "name1", "email1")
dt.Rows.Add(2, "name2", "email2")
Return dt
End Function
Public Function GetDataRecords() As SimpleDS.UsersRow()
Dim dt As New SimpleDS.UsersDataTable
dt.Rows.Add(1, "name1", "email1")
dt.Rows.Add(2, "name2", "email2")
Dim rows() As SimpleDS.UsersRow
ReDim rows(dt.Rows.Count)
dt.Rows.CopyTo(rows, 0)
Return rows
End Function
End Class
==============
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
This posting is provided "AS IS" with no warranties, and confers no
rights.
--------------------
Reply-To: "AG" <NOSPAMa-giam@xxxxxxxxxxxxxxxxx><OH8YFjw4HHA.6140@xxxxxxxxxxxxxxxxxxxxxx>
From: "AG" <NOSPAMa-giam@xxxxxxxxxxxxxxxxx>
References: <#mExuTs4HHA.1168@xxxxxxxxxxxxxxxxxxxx>
<uLqDafz4HHA.3940@xxxxxxxxxxxxxxxxxxxx>
<Z9eYYPV5HHA.4200@xxxxxxxxxxxxxxxxxxxxxx>
<ONjPljc5HHA.536@xxxxxxxxxxxxxxxxxxxx>
<9TI5W#h5HHA.360@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: Web Application Project - ReportViewer Control
Date: Fri, 24 Aug 2007 11:29:16 -0400
Lines: 87
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.3138
X-RFC2646: Format=Flowed; Original
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138
Message-ID: <uCi6HOm5HHA.1188@xxxxxxxxxxxxxxxxxxxx>
Newsgroups: microsoft.public.dotnet.framework.aspnet
NNTP-Posting-Host: ool-44c55ef0.dyn.optonline.net 68.197.94.240
Path: TK2MSFTNGHUB02.phx.gbl!TK2MSFTNGP01.phx.gbl!TK2MSFTNGP04.phx.gbl
Xref: TK2MSFTNGHUB02.phx.gbl
microsoft.public.dotnet.framework.aspnet:39678
X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet
Thanks Steven,
This looks promising, but I am having some trouble understanding it.
Could you please repeat it in VB and explain the origin of the object
sources (rpt_tableTableAdapter, etc) a bit more.
I have looked at help for table adapters and the examples are similar,
still confusing.
--
AG
Email: discuss at adhdata dot com
"Steven Cheng[MSFT]" <stcheng@xxxxxxxxxxxxxxxxxxxx> wrote in message
news:9TI5W%23h5HHA.360@xxxxxxxxxxxxxxxxxxxxxxxxx
Thanks for your followup AG,
So in your scenario, those Business class has already been well
defined
and
only return DataTable, dataset objects, right?
I've performed some further research and I suggest you consider the
following workaround:
** You can still keep the original business class's methods that
return
DataTable, however, you can add a new method which return the typed
DataRow
array. e.g. (the "GetDataRecords" method in the below class)
===========================
public class MyDataSource
{
public TDS.rpt_tableDataTable GetDataTable()
{
TDSTableAdapters.rpt_tableTableAdapter ta = new
TDSTableAdapters.rpt_tableTableAdapter();
TDS.rpt_tableDataTable table = new
TDS.rpt_tableDataTable();
ta.Fill(table);
return table;
}
public TDS.rpt_tableRow[] GetDataRecords()
{
TDSTableAdapters.rpt_tableTableAdapter ta = new
TDSTableAdapters.rpt_tableTableAdapter();
TDS.rpt_tableDataTable table = new
ta.Fill(table);
TDS.rpt_tableRow[] rows = new
TDS.rpt_tableRow[table.Rows.Count];
table.Rows.CopyTo(rows, 0);
return rows;
}
}
=======================
** Thus, at development time, you can see the class and design the
report
by the typedDataRow's properties in "Website data source" window. At
runtime, you can change the datasource back to use the original
method(which return DataTable)
How do you think?
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
This posting is provided "AS IS" with no warranties, and confers no
rights.
.
- References:
- Prev by Date: RE: OCR Software Recommendations
- Next by Date: Re: Web Layout
- Previous by thread: Re: Web Application Project - ReportViewer Control
- Next by thread: Re: asp.net 2 list box and get selected items
- Index(es):