|
I suggest adding the column in design view and make it visible or invisible when you need it. Adding a template column dynamically seems like to much effort.
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
Cannot do in design time. The reason is that I don't know how many DataGrids I need.
The number of DataGrids depends on how many orders the customer selects to process in previous page. If the # is 2 I need 2 Grids, if 1 I need 1 Grid and so on...
I actually figured out how to do them dynamically but there are other issues that I cannot solve.
By making DataGrids generated dynamically I had to create a calss file that goes all the work with loading but that class cannot have any calculations on columns (don't ask me why). I've tried different things and to no success. For example I have quantity field and weights field so I was able to create totalweigth field for each item. But when I try to store total weight variable in grand total weight variable (all itmes togheter) it doesn't work. Haaaaaaaaaaaaa.
|
|
|
|
|
|
. It's funny. I used the same article to create my class file.
Thanks,
|
|
|
|
|
You either add the label, textboxes in the your custom template definition like you see in the article or create an event handler for the ItemCreated event of the dynamic datagrid, you then add the label . textboxes to each datagrid item at the template column.
|
|
|
|
|
Done that. Works fine. The only problem I have is, like I've mentioned before, is to store totals of all orders. For example, when I do ItemCreated even handler I'm able to calculate total for specific item and store it in Label or TextBox. But I cannot calculate total for all items. In my event handler every time I calculate item total I've tried to add it to grandtotal global varailbe that I've put at the top of my class (global variable) but for some reason it doen't work. I'm not sure why!!!
Public Class DataGridTemplate
Implements ITemplate
Dim templateType As ListItemType
Dim columnName1 As String
Dim columnName2 As String
Dim mode As Integer
Dim grandtotalweight As Decimal
Sub New(ByVal type As ListItemType, ByVal ColName1 As String, ByVal ColName2 As String, ByVal md As Integer)
templateType = type
columnName1 = ColName1
columnName2 = ColName2
mode = md
grandtotalweight = 0
End Sub
Sub InstantiateIn(ByVal container As Control) _
Implements ITemplate.InstantiateIn
Dim lb As New Label
Dim tb As New TextBox
Select Case templateType
Case ListItemType.Header
lb.Text = "" & columnName1 & ""
container.Controls.Add(lb)
Case ListItemType.Item
AddHandler lb.DataBinding, AddressOf BindDataWeights
container.Controls.Add(lb)
Case ListItemType.EditItem
tb.Text = ""
container.Controls.Add(tb)
Case ListItemType.Footer
lb.Text = "Footer"
container.Controls.Add(lb)
End Select
End Sub
Sub BindDataWeights(ByVal Sender As Object, ByVal e As EventArgs)
Dim lb As Label = CType(Sender, Label)
Dim Container As DataGridItem = CType(lb.NamingContainer, DataGridItem)
Dim qty As Integer = DataBinder.Eval(Container.DataItem, columnName1)
Dim sku As String = DataBinder.Eval(Container.DataItem, columnName2)
Dim total As Decimal = GetWeights(qty, sku)
lb.Text = Format(total, "0.00")
End Sub
Function GetWeights(ByVal qty As Integer, ByVal sku As String) As Decimal
Dim con As System.Data.SqlClient.SqlConnection
Dim rdr As System.Data.SqlClient.SqlDataReader
Dim weight As Decimal = 0
Try
con = New System.Data.SqlClient.SqlConnection
con.ConnectionString = "connection string goes here"
con.Open()
Dim cmd As New System.Data.SqlClient.SqlCommand("SELECT * FROM Weights WHERE itm_sku=@i_sku", con)
cmd.Parameters.Add("@i_sku", sku)
rdr = cmd.ExecuteReader()
Do While rdr.Read()
weight = rdr("itm_wght")
Loop
rdr.Close()
con.Close()
Catch ex As Exception
con.Close()
'Display error message
End Try
' This is where I try to sotre total weights in the grandtotalweight variable
' But when I access it later on it returns 0
grandtotalweight += weight * qty
Return weight * qty
End Function
End Class
-- modified at 9:02 Friday 16th June, 2006
|
|
|
|
|
How do you get the grandtotalweight later on? Do you want to display this value in the footer of the dynamic column? Then how do you create the templates for the dynamic column? Are you sure that the template instance of the footer is the same as one of the item? IMO, you are using difference objects so the grandtotalweight gives you 0.
|
|
|
|
|
You are right. I do instantiate objects for each column. That's why I thought that my code should work. Cloumn 5 is where I calculate the weights so I'm using the dgtemp object (Please see code below).
Thanks,
' Bind data to DataGrid
Dim dg As New DataGrid
dg.ID = "dg" & 1
dg.AutoGenerateColumns = False
' Cloumn 1
Dim tc1 As New TemplateColumn
tc1.HeaderTemplate = New DataGridTemplate(ListItemType.Header, "SKU", "", 0)
tc1.ItemTemplate = New DataGridTemplate(ListItemType.Item, "itm_sku", "", 1)
dg.Columns.Add(tc1)
' Cloumn 2
Dim tc2 As New TemplateColumn
tc2.HeaderTemplate = New DataGridTemplate(ListItemType.Header, "DESCRIPTION", "", 0)
tc2.ItemTemplate = New DataGridTemplate(ListItemType.Item, "itm_desc", "", 2)
dg.Columns.Add(tc2)
' Cloumn 3
Dim tc3 As New TemplateColumn
tc3.HeaderTemplate = New DataGridTemplate(ListItemType.Header, "QTY TO SHIP", "", 0)
tc3.ItemTemplate = New DataGridTemplate(ListItemType.Item, "itm_qty", "", 3)
dg.Columns.Add(tc3)
' Cloumn 4
Dim tc4 As New TemplateColumn
tc4.HeaderTemplate = New DataGridTemplate(ListItemType.Header, "QTY ORDERED", "", 0)
tc4.ItemTemplate = New DataGridTemplate(ListItemType.Item, "itm_qty", "", 4)
dg.Columns.Add(tc4)
' Cloumn 5
Dim tc5 As New TemplateColumn
tc5.HeaderTemplate = New DataGridTemplate(ListItemType.Header, "WEIGHTS (lbs)", "", 0)
Dim dgtemp As New DataGridTemplate(ListItemType.Item, "itm_qty", "itm_sku", 5)
tc5.ItemTemplate = dgtemp
dg.Columns.Add(tc5)
' Try to get grand total
txt_total_weight.Text = dgtemp.GetTotalWeight()
' Bind Reader (data from DB) to DataGrid
dg.DataSource = rdrItm
dg.DataBind()
|
|
|
|
|
Because you are using the DataBinding event to populate the grandtotalweight, so if you access this variable before the DataBind method is called (before the DataBinding event gets fired), the result is clearly 0. The quick fix is to move it after the DataBind method call:
'Try to get grand total
'txt_total_weight.Text = dgtemp.GetTotalWeight()
' Bind Reader (data from DB) to DataGrid
dg.DataSource = rdrItm
dg.DataBind()
'Try to get grand total
txt_total_weight.Text = dgtemp.GetTotalWeight()
|
|
|
|
|
Man...... Thank you very much.
Sometimes it takes a fresh eye to see these kind of 'stupid' mistakes.
Thanks.
|
|
|
|
|
I have three div elements: (divleft,divcenter,divright) in my page. There are links in the divleft created through ASP:HyperLink control. When any link is clicked i want to display the refered throug NavigateURL in the divcenter. What should i do for that?
Thanks
|
|
|
|
|
Try using an IFrame inside the div center and set the src property of the iframe.
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
i m working in asp.net 2.0 and using database with it...made a table named ContactUs and stored procedures or_contactus_insert to insert the data and or_autogenerate to increment da contactid coulmn of contactus and classes, bt i m recieving an error of argument exception ..plz help me urgently..i m sending u code
Dim User As New CSUserInfo()
User.Or_FName = TxtFName.Text.ToString().Trim()
User.Or_LName = TxtlName.Text.ToString().Trim()
User.Or_Gender = RadioBttnListGender.SelectedItem.Text
User.Or_Email = TxtEMail.Text.ToString().Trim()
User.Or_PhoneNo = TxtPhoneNumber.Text.ToString().Trim()
User.Or_Street = TxtStreet.Text.ToString().Trim()
User.Or_Apartment = TxtApartment.Text.ToString().Trim()
User.Or_City = TxtCity.Text.ToString().Trim()
User.Or_State = TxtState.Text.ToString().Trim()
User.Or_Country = TxtCountry.Text.ToString().Trim()
User.Or_ZIP = TxtZip.Text.ToString().Trim()
User.Or_ContactByOrient = CheckContactByOrient.Checked
User.Or_Message = TxtTypemessage.Text.ToString().Trim()
Dim Orientconn As New SqlConnection
Dim SelectCommand As New SqlCommand
'Try
Orientconn.ConnectionString = System.Web.Configuration.WebConfigurationManager.AppSettings("Sconstring")
Orientconn.Open()
Dim OR_ContactIdDA As New SqlDataAdapter("OR_AUTOGENERATE", Orientconn)
OR_ContactIdDA.SelectCommand.CommandType = CommandType.StoredProcedure
OR_ContactIdDA.SelectCommand.Parameters.AddWithValue("@Tablename", "ContactUs")
OR_ContactIdDA.SelectCommand.Parameters.AddWithValue("@P_Key", "ContactId")
Dim OR_ContactIdDS As New DataSet("ContactUs")
OR_ContactIdDA.Fill(OR_ContactIdDS, "ContactUs")
'Dim IUserId As New ViewStateException
ViewState("IUserID") = Convert.ToInt32((OR_ContactIdDS.Tables(0).Rows(0)("ContactId")).ToString() + 1)////////i m getting error here dt contact id column is not of table contactus
''ViewState("IUserID") = Convert.ToInt32((OR_ContactIdDS.Tables("Or_ContactId").Rows(0)("Or_ContactId").ToString() + 1))
User.Or_ContactId = ViewState("IUserID").ToString()
Dim User1 As New CSUserDB
User1.InsertContactUs(User)
End Sub
samriti thakur
|
|
|
|
|
What error are you getting?
how vital enterprise application are for proactive organizations leveraging collective synergy to think outside the box and formulate their key objectives into a win-win game plan with a quality-driven approach that focuses on empowering key players to drive-up their core competencies and increase expectations with an all-around initiative to drive up the bottom-line. But of course, that's all a "high level" overview of things
--thedailywtf 3/21/06
|
|
|
|
|
Hi,
I developed a test webpage that uses dom comparevalidator and sets it controltovalidate as a textbox and run it in mozilla firefox then the validation are fired. but when i want to validate a drop down instead of a textbox validator doesn't work.
Can any one provide solution to this problem.
praveen
|
|
|
|
|
In order to validate drop downs use the Request.Form["mydropdown"] to get the text. Be sure to check for null before trying to access any properties.
regards,
Mircea
Many people spend their life going to sleep when they’re not sleepy and waking up while they still are.
|
|
|
|
|
Hi all,
I am using repeater control(with paging) along with text box and search button on same page.
Textbox containing search criteria.
Everything is working fine,when records are more paging also works fine.But when I navigate to second page page get refreshed and textbox lost its value.
So I want to Keep my textbox value as it was when we navigate by link to second record page.
I hope you will help me........
|
|
|
|
|
Hi,
You loose your data, when posting back, so you need to save the value of the textbox when you page comes to the server, and in your Bind method, after you retrieve the values for the second page, retrieve the previously saved textbox value
Sincerely,
Elina
Life is great!!!
Enjoy every moment of it!
|
|
|
|
|
Thanks for help..
Bye.............
|
|
|
|
|
You are welcome,
Was it helpful?
Sincerely,
Elina
Life is great!!!
Enjoy every moment of it!
|
|
|
|
|
Hi..
I know how to use the application and session state variables and i have used the following code :
(In the Global.asax
protected static int m_ActiveUsers;
public static int ActiveUsers
{
get
{ return m_ActiveUsers;
}
}
protected void Application_Start(Object sender, EventArgs e)
{
Application.Lock();
m_ActiveUsers=0;
Application.UnLock();
}
protected void Session_Start(Object sender, EventArgs e)
{
Application.Lock();
++m_ActiveUsers;
Application.UnLock();
}
protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
--m_ActiveUsers;
Application.UnLock();
}
But the problem it doesnt give me the right number always.Some times this code tells me there is two visitors while there is no one except me.And some times it doesnt decrement the visitors count number when i exit.
Do any one know how to make a better way that wont be affected by application errors and will solve my problem?
"I am too late but i will never give up"
|
|
|
|
|
In global file
at application start
application("users") = 0
at form loads
Application("users") = CType(Application("users") , integer) + 1
label1.text = Application("users").tostring
|
|
|
|
|
Your code will count how many times users load the webform not how many users visit the website?!
"I am too late but i will never give up"
|
|
|
|
|
this is code is not right .
suppose currently 4 user are active and one of 4 user quit and again he comes back for him session will start form begining and session_start function calculate m_active user to 1 so it will give wrong result.
better is that maintain this variable m_active user in some file or database and increment and decrement it when user starts and end session.
hope this will work
Murtaza Tahir Ali Dhari
|
|
|
|
|
Thank you for your respond...
You said :and session_start function calculate m_active user to 1
As i know when a user quits and returns this will not restart the whole web application(Application_End) but will restart only one of the four users sessions(Session_End).I mean ending one session will not end other 3 sessions.
"I am too late but i will never give up"
|
|
|
|