Databound Control From An ObjectDataSource Event?
Dec 20, 2010
Take for example a DetailsView control with an ObjectDataSource as its datasource.Normally in the DetailsView.ItemUpdated event I would grab a reference to the details view by casting the sender:
DetailsView dv = (DetailsView)sender;
In certain situations it becomes necessary to handle the event inside the ObjectDataSource.ItemUpdated event. In this case sender is now of type ObjectDataSource. What I want to be able to do is write clean code that isnt hardcoded like
Label label1 = DetailsView1.FindControl("Label1");
I looked over the documentation and also did some searches but couldnt find how I would write some code like the following:
protected void ObjectDataSource1_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
{
ObjectDataSource ods = (ObjectDataSource)sender;
DetailsView dv = (DetailsView)ods.SOMETHING_HERE;
}
what I should be putting in the SOMETHING_HERE in the snippet above?
View 2 Replies
Similar Messages:
Mar 16, 2011
I am working on a project in ASP.Net, in which I am using DataList control to list the candidate data. As we know, DataBoud event is available for gridview control, which is raises after databound. In DataList control no such event is available. Yes, ItemDataBound event is there which is arises on every Item bound. Let us assume, that I want the number of items are listed in datalist, after completing the data bound of datalist.
View 2 Replies
Dec 7, 2010
I want to render something like this (with ASP.Net Controls in the codebehind):
<ul>
<li class="first"><h1>This is a caption</h1></li>
<li><a href="#" title="" target="_self">Foo</a></li>
<li><a href="#" title="" target="_self">Foo1</a></li>
<li><a href="#" title="" target="_self">Foo2</a></li>
<li><a href="#" title="" target="_self">Foo3</a></li>
<li><a href="#" title="" target="_self">Foo4</a></li>
</ul>
<ul>
<li class="first"><h1>This is a another caption</h1></li>
<li><a href="#" title="" target="_self">Foo5</a></li>
<li><a href="#" title="" target="_self">Foo6</a></li>
<li><a href="#" title="" target="_self">Foo7</a></li>
<li><a href="#" title="" target="_self">Foo8</a></li>
<li><a href="#" title="" target="_self">Foo9</a></li>
<li><a href="#" title="" target="_self">Foo10</a></li>
<li><a href="#" title="" target="_self">Foo11</a></li>
</ul>
The amount of li elements that will be rendered into each ul is determined at runtime. Each link in a li belongs to into a specific ul (the one containing a specific caption. Imagine this as a kind of a treeview with nodes and subnodes) During the bind Event I need access to an ASP:HyperLink that will be rendered into the a-element. Which databound ASP.Net control should I pick for this? Looks like a repeater in a repeater, which should make the databinding process ugly. I'm thinking about creating this HTML-Output with StringWriters myself.
View 1 Replies
Mar 29, 2011
I'm having trouble managing how to call upon databind from clicking on a row over an already populated repeater that will populate data regarding the row clicked TO another repeater on the same page.
I've succeeded doing that with postback, calling a jquery click event of that row, taking the data of the specific row and passing it onto a "Querystring" and after postpack, it will be pushed into a Session which the ObjectDataSource of the secondary repeater will recognize and populate the data tables accordingly.
The problem is, I must do it without a postback or in other words purely on client side.
View 1 Replies
Aug 10, 2010
I was just wondering what is the best way to fetch gridview data using row databound event of gridview. I am previously used to Eval but read its not recommended as it uses reflection.
View 1 Replies
Mar 16, 2010
I just started working with LinqDataSources and I was wondering how you retrieve values in a FormView DataBound Event.
With an ObjectDataSource I believe you can grab them like:
[Code]....
Is there a similar way to acheive this with a LinqDataSource?
View 4 Replies
Apr 23, 2010
I have FormView in my page markup:
[code].....
In theory, I'm able to find control on FormView after it being data bound. But I'm not. Why?
View 1 Replies
Jan 19, 2011
have a listview with a list of comments. I would like to add the avatar of the person that posted the comment to each comment. To accomplish this I need to find the ListViewItem find the UserID get the avatar URL and add it to the ListView. I am sure I can do all of this in the ListView Databound event but how?
protected
void ListViewViewComments_DataBound(object sender,
EventArgs e)
{
try
[code]...
View 1 Replies
Sep 22, 2010
I know the question has already been posted here but we didn't get to an real solution.I have bound my ListView to an SqlDataSource and I want to write some text in a control present in the view created in the LayoutTemplate depending on some properties of the rows returned.Obviously, I'm using the ItemDataBound event to feed my items but this is not the point.
The spontaneous solution was to bind the ListView.DataBound event and access the raw datasource (a DataTable?) and do the required calculations.I inspected the Items property and, despite it was not empty, the related DataItem property was null.The only work-around I can come to is to execute the calculations in the ItemDataBound event and accumulate the result in some private fields. But it's really ugly to see and makes harder to get some of the required values.
View 1 Replies
Nov 7, 2010
How can i do the following:
I already have an ArrayList populated from an Oracle table using SQL Select statement.
[Code]....
View 6 Replies
Oct 7, 2010
Currently struggling with a problem that I've encountered variations on in the past. At the moment a worthwhile solution escapes me, but it seems such an obvious issue that I can't help wondering whether or not there's a "best practice" approach I should adopt.Without code, here's the issues in a nutshell:
page has databound control (a repeater) which isn't populated until user inputs data and clicks a button.Repeater item template contains a buttonUser clicks button, page posts back. On load, the repeater is actually empty so event is never handled because the originating control no longer existsGo back to the beginning of wretched cycle I've confirmed that this is the problem because if you provide the repeater with some static data on page load, everything works fine. But of course that's no use because it has to be populated dynamically.Is there a commonly approved way round this headache? I can store the data in session and re-use it on page load, but it seems terribly clumsy.
View 2 Replies
Oct 5, 2010
I have a condition on which i have to set the column of the datalist at run time.IT may be 2,3 or 4 at run time. How i do it. plz replay as soon as possible.
Is this possible that on the item bound event i set the html <tr><td>.
View 1 Replies
Aug 9, 2010
I have the following situation:My business class:
public class Foo
{
public String A {get;set;}
public DateTime B {get;set;}
// .. and other properties like
public String Intern {get;set;}
}
I'm binding that Item to a DetailsView in Editmode. (I bind a List containing a single object of Foo, becuase I do recall that I can only bind IEnumerable<> classes to the DetailView)The binding is done via a ObjectDataSource
View 1 Replies
Apr 26, 2010
In my application there are some GridView(GV) controls. Deletion is already implementd in GV's RowCommand.
Now GVs are bound to ObjectDataSource(ODS). So, whenever a deletion is performed I run into situation like
"System.NotSupportedException: Deleting is not supported by ObjectDataSource.........."
So, I have created a Delete method in the DAL that does nothing and hooked it up to the ODS via its DeleteMethod property.
My question is, is it possible to suppress the Delete event of the ODS? So, when something is deleted thru GV, it will be handled in the GV's RowCommand and ODS' Delete event handler is not called.
View 3 Replies
Feb 11, 2011
I have a DetailsView control bound to an ObjectDataSource within a User Control (.ascx). It appears that the DetailsView.OnDataBound event is being fired on every page load or postback.
I do not see this behavior with a similiar DetailsView directly placed on an aspx page.
View 1 Replies
Jul 22, 2010
I wanted to get the total row count in a GridView's databound event handler, so I tried the following:
protected void grid_DataBound(object sender, EventArgs e)
{
GridView grid = (GridView)sender;
DataSet data = grid.DataSource as DataSet;
if (data == null)
return;
int totalRows = data.Tables[0].Rows.Count;
}
The problem is that the grid.DataSource property is null. The DataSourceID property is not null, so does that mean that I can't access the DataSource object in the DataBound event handler unless I assign the DataSource property directly?
Edit1: Here is the code in my GridHelper class for adding rowcount to the BottomPagerRow. I would like to get rid of the requirement to pass in the ObjectDataSource, but can't because I need to use the Selected event to get total row count. Hence the reason for the question. I also think this might be better in a custom control where I can access ViewState, and/or create child controls during the Init event (I still have a problem to resolve with the way the pager renders with an extra cell), but then I'd still have the problem of how to get to the total row count when the DataSource itself doesn't appear to be available in any GridView events.
Edit 2: Not really relevant to the specific problem, but I resolved the problem I was having with the pager rendering so i've updated the code posted. I found the trick here: [URL]
#region Fields
private int totalRows = -1;
#endregion
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="GridHelper"/> class.
/// Adds EventHandlers to the GridView to display results from the ObjectDataSource in the footer.
/// Marked as obsolete because AddResultsToFooter method provides a static access to the same functionality
/// An instance of GridHelper is required by the passed in GridView to store the totalRows value between the two event handlers
/// </summary>
/// <param name="grid">The grid.</param>
/// <param name="source">The ObjectDataSource linked to the GridView.</param>
[Obsolete("Use AddResultsToFooter instead.")]
[EditorBrowsable(EditorBrowsableState.Never)]
public GridHelper(GridView grid, ObjectDataSource source)
{
source.Selected += source_Selected;
grid.PreRender += grid_PreRender;
}
#endregion
#region Event Handlers
private void grid_PreRender(object sender, EventArgs e)
{
GridView grid = (GridView)sender;
if (grid.HeaderRow != null)
grid.HeaderRow.TableSection = TableRowSection.TableHeader;
//Add a cell to the bottom pager row to display the total results
if (grid.BottomPagerRow == null || !grid.BottomPagerRow.Visible)
return;
//Get the control used to render the pager
//http://michaelmerrell.com/2010/01/dynamically-modifying-the-asp-net-gridview-paging-control/
Table tblPager = grid.BottomPagerRow.Cells[0].Controls[0] as Table;
if (tblPager == null)
return;
if (totalRows < 0)
{
//The DataSource has not been refreshed so get totalRows from round trip to client
addResultsToPagerTable(tblPager, grid.Attributes["results"]);
return;
}
int firstRow = grid.PageIndex * grid.PageSize + 1;
int lastRow = firstRow + grid.Rows.Count - 1;
string results;
if (totalRows <= grid.PageSize)
results = string.Format("<span class='grid-pager'>{0} Results</span>", totalRows);
else
results = string.Format("Results <b>{0}</b> to <b>{1}</b> of <b>{2}</b>", firstRow, lastRow, totalRows);
addResultsToPagerTable(tblPager, results);
//Need to store the information somewhere that is persisted via ViewState, and we don't have access to ViewState here
grid.Attributes.Add("results", results);
}
/// <summary>
/// Handles the Selected event of the source control. Gets the total rows, since it is not possible to access them from the GridView.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs"/> instance containing the event data.</param>
private void source_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.ReturnValue is DataView)
totalRows = ((DataView)e.ReturnValue).Count;
else if (e.ReturnValue is EntitySet)
totalRows = ((EntitySet)e.ReturnValue).Count;
}
#endregion
#region Private Methods
private static void addResultsToPagerTable(Table tblPager, string results)
{
//http://michaelmerrell.com/2010/01/dynamically-modifying-the-asp-net-gridview-paging-control/
//Get a handle to the original pager row
TableRow pagesTableRow = tblPager.Rows[0];
//Add enough cells to make the pager row bigger than the label we're adding
while (pagesTableRow.Cells.Count < 10)
pagesTableRow.Cells.Add(new TableCell { BorderStyle = BorderStyle.None });
//Add a new cell in a new row to the table
TableRow newTableRow = new TableRow();
newTableRow.Cells.AddAt(0, new TableCell
{
Text = results,
BorderStyle = BorderStyle.None,
ColumnSpan = pagesTableRow.Cells.Count
});
tblPager.Rows.AddAt(0, newTableRow);
}
#endregion
#region Public Methods
/// <summary>
/// Adds EventHandlers to the GridView to display results from the ObjectDataSource in the footer.
/// </summary>
/// <param name="grid">The GridView.</param>
/// <param name="source">The ObjectDataSource linked to the GridView.</param>
public static void AddResultsToFooter(GridView grid, ObjectDataSource source)
{
if (grid == null)
throw new ArgumentNullException("grid", "grid is null.");
if (source == null)
throw new ArgumentNullException("source", "source is null.");
new GridHelper(grid, source);
}
#endregion
View 1 Replies
Jan 14, 2011
I've a Gridview control using an ODS(ObjectDataSource) to fetch data. For the best performance and efficiency, I've turned-off the view state of Gridview (i.e. EnableViewstate = "false".And I've also enabled caching in the associated Objectdatasource. This eliminates as much as 50-60% performance optimization because it eliminates the DB round-trip .. courtesy ODS Caching.So, after this I got stuck into the famous "ODS sorting" issue but I managed to invent a tricky solution for it and its working fine
View 4 Replies
Jul 12, 2010
i have a check box list control that is used for showing related files to some post.
what i want to do is set the databound items "checked" to true by default
then,
if a user unchecks some item and clicks the save button. then the selectedindexchanged will fire and i will do some logic.
what i have done is.
--Set All Databound items to "checked" --
[code]....
in the end i want the item that was unchecked to be removed (all other items will remain checked). but even before that, when the user control is loaded all the files that were bounded are being deleted by the index change event.
View 3 Replies
Jun 28, 2010
last year I inherited a webapplication that seems to refuse to run on a new hosting company's servers due to a "security violation"... Our old host was bought out and now sucks...So I uploaded the code to the new company - looking forward to some sleep and found that my life was about to get more complex.. I go the good old generic security error
System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object
The biggest issue was that it didn't say where the error was.. Digging deeper (taking the code appart one block a time) the error was being triggered by the followin itemdatabound event. My host says it is because they are running under medium trust, but I am not seeing why this block should cause issues. Any help very much appreciated.
Sub dlstAlsoDish_ItemDataBound(ByVal s
As
Object,
ByVal e
As DataListItemEventArgs)
Handles dlstAlsoDish.ItemDataBound
If e.Item.ItemType = ListItemType.Item
Or e.Item.ItemType = ListItemType.AlternatingItem
Then
Dim lngDateType
As
Long = e.Item.DataItem("dateType")Dim
strEvent As
String =
"> " & e.Item.DataItem("restName") &
" :: " & e.Item.DataItem("eventName") &
" : "
Dim lnkAlsoEvent
As HyperLink = e.Item.FindControl("lnkAlsoEvent")Dim dtmStart
As DateTime = e.Item.DataItem("eventSrt")Dim dtmEnd
As DateTime = e.Item.DataItem("eventEnd")If lngDateType = 1
Then
strEvent = strEvent & Format(dtmStart, "MMM")ElseIf lngDateType = 2
Then
strEvent = strEvent & Format(dtmStart, "dd MMM") &
" TO " & Format(DateAdd(DateInterval.Day, -1, dtmEnd),
"dd MMM")Else
strEvent = strEvent & Format(dtmStart,"dd MMM")End
If
lnkAlsoEvent.Text = strEvent
lnkAlsoEvent.NavigateUrl = e.Item.DataItem("restURL") &
"/events.aspx#e" & e.Item.DataItem("eventID")ElseIf e.Item.ItemType = ListItemType.Header
Then
imgBorder.ImageUrl = strImageURLDim imgBorder
As Image = e.Item.FindControl("imgBorder")End
If
End
Sub
View 3 Replies
May 10, 2010
i have a FormView, and i already have a Label control that gets the value of theselected propery inside the FormView, so each time the FormView displays data, i have a Label control that displays individual values, according to the value of the FormView, here is the code:
[code]....
What i would like to do is to know how i could add a DataList instead of a Label, and then each time the FormView databinds an item, to show the value of the DataList How would i go about doing that?
View 10 Replies
Aug 31, 2010
Depending on the case, I'd like to hide a databound control in a page. But no matter what I try, it seems like the control will try biding no matter what. I've tried setting Visible="false", but it would still try to bind. I've tried putting the control into a placeholder and then hide the placeholder, it will try to bind anyway. I've also tried putting it into a MultiView, same thing. You would think that in a wizard interface using a MultiView you would not want the controls in the next steps of the wizard to bind, but no. It binds anyway...
The only way I've found is to unset and set the DataSourceID property which seems to prevent binding.
Is this really the only option?
View 2 Replies
Feb 25, 2010
I have a control that inherits CompositeDataBoundControl. Based on the values of the bound data, I create som dynamic controls. In order to preserve state, I need to recreate the control tree on every request(from CreateChildControls):
[code]....
The problem is that on postback the PaymentMethod object is null, so I have no method of knowing what kind of control to recreate. That means that the control state is ruined. If I hardcode the type of payment control to make, it works as expected:
UserControl userCtrl = (UserControl)Page.LoadControl("~/WAF/View/VisitControls/Shop/CreditCardForm.ascx");
dataContainer.Controls.Add(userCtrl);
userCtrl.ID = "CreditCardForm";
how I can find out what payment method is used, so that I can create the correct control on postback?
View 1 Replies
Sep 20, 2010
I've come to a scenario where I need to databind something only if the user is logged in. To do this I am using the LoginView control to display a Login control when they are not logged in and a GridView control when they are logged in. However, when I databind to the GridView object in the LoginView, nothing ever gets displayed. I have been debugging it and I am databinding it to a DataTable that definitely has data in it, however nothing shows up.
Here is some of the code:
if (User.Identity.IsAuthenticated)
{
((GridView)LoginView1.FindControl("GridView1")).DataSource = dt;
((GridView)LoginView1.FindControl("GridView1")).DataBind();
}
Is there a particular reason that this should not work? Is it bad practice?
View 1 Replies
Oct 5, 2010
I want a javascript on a databound row to act on another control in the same row - show/hide for example. The classic ASP approach was to number the controls (usually by rowIndex so that they're easier to reference. I am wondering is there a way to do this in ASP.Net without writing any item command code?
So for html to render as follows
<div onClick='actOnX0'> <span id=x0>i am x0</span></div>
<div onClick='actOnX1'> <span id=x1>i am x1</span></div>
<div onClick='actOnX2'> <span id=x1>i am x2</span></div>
Can I insert the numbers using a databound property that returns say the rowIndex / item index of the current row?
View 2 Replies
Mar 10, 2011
I understand I need to load my dynmaic control on every postback and preferrably in Page_Init(). But my dyanmic controls are loaded from a dropdownlist selectedindexchanged event handler. Now after any postback, my dynamic controls are gone. How would I force it to load on every postback ?
View 2 Replies