Forms Data Controls :: Programmatically Setting Detailsview Label Text
Jan 20, 2011
I am trying to programmatically set some lables inside a DetailsView that is populated by an ObjectDataSource. The detailsview is handled in an unusual way with one TemplateField that has one ItemTemplate that has one table that has two rows of significance and a boatload of bound items. I'll be working on the EditTemplate next. But now I need to set the top row lable values programmatically baised on the type of data that comes-up. I have scoured the Internet looking for ideas and found two possible approaches - neither worked. I get the error about something not being set to an instance of the object - or something like that.
Here is the ObjectDataSource:
[Code]....
Here is the DetailsView:
[Code]....
My first approach was to set the OnSelected property to the following code in the code behind, which executes:
[Code]....
My second approach was to delete that OnSelected property and try the following code in the code behind:
The problem is this: I am writing a system to show helptexts on certain labels. So in the PageLoad I recursively iterate all controls and save those with a certain tag. So far so good.
On the PreRenderComplete I iterate the controls and set their text property. The strange this is that the labels in ItemTemplate don't get the new text. The PreRenderComplete fires after the DataBound event of the gridview, the label gets found perfectly, in the end it has the new text, but in the page it's still the old text.
I hope I don't need the Row_Databinding event of the gridview, since I want to put all the functionality in an extender class with as little custom work as possible.
<asp:TemplateField HeaderText="Approval" Visible="false"> <InsertItemTemplate> <asp:CheckBox ID="Approved" runat="server"/>This must be checked to allow the insert. </InsertItemTemplate>
I have a DetailsView control with DefaultMode = ReadOnly in my page. When the page loads, it shows the edit link. I would like to programmatically hide the edit link when the user is an administrator on page load. By default, I have set ShowEditButton="True". How do i reference the edit link when it is automatically genereated from the CommandField.
I have Template fields configured for Gridview. The gridview is using an objectdatabsource to bind itself. I have the gridview configured to use Templatefields which then contain tables to display the information. This works fine.
My question is, is it possible to change the text of the label if certain criteria is reached. If "NumberOfDwellings" is 1 then change the label to read, "1 Dwelling". Where-as if NumberOfDwellings has more than one then it's "3 Dwellings".
Background: I open a page that has a detailsview control using Accessdatasource. It is automatically opened with the row I want to update as I get there by passing the key as a URL parm. The update works for all fields except 2 template fields I added. I added a field for update date and updated by which I want the code to populate in the code behind so the user does not enter it. I have the same login on another page using an insert and it works fine. I cannot figure out what is wrong on the update and I tried everything. The code behind is in the OnItemUPdating event. code behind:
I am using DetailsView to pull database records and want to set the word wrap on the Edit page. But when I enter Edit the data shows up as a single long text string, (see pics). In the default display the text wraps fine. I have played with every option that is available even trying to set the field to a TemplateField but nothing I do displays the Edit test wrapped.
This is the edit page, notice that the Info field text is just a straight line.
I have been used to using non enabled textboxes (with multiline as textmode option) in the past as a way to display multiple lines in a detailsview template. However, what I want to achieve is a scenario where I can use a label with a multiline option instead of a textbox. The reason for this is that I am outputting the content in the detailsview to pdf format and I do not want all the text in a label/textbox bunched up.
I have a databound label control (i.e. Label 3) inside an Item Template that's in a DetailsView control. I just need to get the value of those label and compare it to some string. I tried several ways (i.e. Find control, DetailsView.Row) but nothing seems to work. I don't know if I'm using the FindControl methos correctly or if I need to access the Row first and do the findcontrol method.
I have a detailsview control which I use to enter data and save to the database. The control is connected to the db through a objectdatasource. When the insert is successful, I want to set some variables and redirect the page to a different one. The detailsview control has AutoGenerateInsertButton="True". I don't know how to access the insert button click event in the code behind,
I need to perform some string manipulation to a columns contents in a GridView, and I'm using the DataBinding event for the template field for this. I'm converting all Environment.NewLine's to 's for outputting.
Here is the code:
[Code]....
It writes the correct, newly modified, string at the top - but why isn't it feeding back to the grid view?
I have a calendar on my page, i need to display certain information on the page once a date is selected. I have a procedure in SQl that returns 1 row with 3 columns. I need to display that data within my page in the labels.
Here is my code to return the values based on the selected date:
[Code]....
I tried this within my selectionchanged event for the calendar, but get error:
[Code]....
This is the error i get:
Compiler Error Message: CS1955: Non-invocable member 'System.Data.DataTable.Columns' cannot be used like a method.Source Error:
i am using visual studio 2008 vb. i have a dropdownlist in my detailsview populated with product id. when i select an id, the product name will appear on a label. however, when i change the product id in the dropdownlist, an error occur "Conversion from string "ProductName" to type 'Integer' is not valid." Here's the code file.
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Dim lbl As Label = DetailsViewOrderDetails.FindControl("Label4") Dim ddl As DropDownList = DetailsViewOrderDetails.FindControl("DropDownList1") lbl.Text = ddl.SelectedValue("ProductName").ToString() End Sub
I guess I'm not sure exactly how or where to do what I need.
First off - here's what I need - - when the user clicks on the NEW button in the detailsView, I have the User.Identity.name captured in a variable and I need to set one of the textboxes (InsertItemTemplate) named 'txtNew' to that name.
I've tried using the ModeChanging (and ModeChanged) event: Dim dv As TextBox = CType(DetailsView1.FindControl("txtNew"), TextBox) If (e.NewMode = DetailsViewMode.Insert) Then ....
However, no matter what, 'dv' always shows as 'Nothing', so I can't change the text of it.
I've tried to get a list of the IDs of the controls, but when I try to access he ID field of control at index 0 I get a null reference exeption, even though the collection has a .Count == 5. Any clue why or if it can be done and how? I've tried this both in Page_Load and off a button_click event.
Assuming you need the ID to set the proper tab index via the control collection object, the following code should produce the list of the names of the 5 controls. The output is '01234' to the multiline textbox... (the values of x)
I'm tyring to write a simple DetailsView only used for inserting new records that will pre-fill a textbox with a query string value. Here's the DetailsView:
[code]....
All I want to do is set VenueID_FK.Text to = the "VenueID" querry string. I also want the user to be able to see the VenueID number as they are filling out GridView1.
I know this is probably a simple thing, but I am very new to asp.net. I thought I could handle this in the page load event, but when I try something like this
And then follow by setting the Text property programitically. I've accomplished something similar to this on a different page using a FormView, but only for ReadOnly mode and it was handled in the databound event on that page.
I get the error "The name 'DetailsView1' doesn't exist in the current context." when trying to do the above mentioned. When trying the same line in the databound event here, I get the same error.
I am trying to highlight a cell in a DetailsView if the value displayed is either "Desktop Computer" or "Laptop Computer" say red, I seem to be able to find examples for gridview but I don't seem to be able to apply this to a DetailsView.