DataKeyNames In Databound Controls Must Be A Property?

Aug 24, 2010

I use a ListView along with an ObjectDataSource tied to a business object. This object is defined as follows:

public class Employee
{
public int Id;
public string Name;
}

When I try setting the DataKeyNames property of the ListView to Id, ASP.net blows up and says: DataBinding: 'Employee' does not contain a property with the name 'Id'. However, when I change the object to that:

public class Employee
{
public int Id {get; set;}
public string Name;
}

It works!!!I couldn't find any documentation about this behavior. Why is it not accepting a simple variable for DataKeyNames and instead it insists on a property?

View 1 Replies


Similar Messages:

Forms Data Controls :: Displaying A Databound Dropdown List In A Property Grid?

Jan 8, 2011

How would I go about displaying a databound dropdown list in a property grid, i.e. a dynamic list that can be used to set the value of an individual property?

View 1 Replies

Get Total Row Count And Why Is The GridView's DataSource Property Null In The DataBound Event Handler

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

C# - Which Databound Control Should Be Use For Nested Databound Controls?

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

Forms Data Controls :: Get The Values Of DataKeyNames?

Apr 18, 2010

I have a GridView with edit/update functionality. While updating, I need to get some hidden values saved in DataKeyNames. How to get the values of DataKeyNames via RowCommand? I have tried the following code via RowUpdating and RowCommand, but it gives an error in e.CommandArgument.

[Code]....

View 10 Replies

Forms Data Controls :: Set The Datakeynames In The Nested Listview

Aug 8, 2010

I have two listviews. What i want to do is that when the nested listview emptydatatemplate shows i want to put a hyperlink with a querystring in it, the id in the querystring should be the fk in the nested listview. Is it possible to bind the hyperlink with the id in codebehind? I use two object datasources. Does it matter where i put the nested listview now i have it in the parents itemtemplate. Also it seems to be a problem to set the datakeynames in the nested listview, what could be the reaso for that.

[Code]....

View 3 Replies

Forms Data Controls :: Accessing Many DataKeyNames Within One Gridview?

Jan 11, 2010

From what I understand within the Gridview Object you can have many datakeynames.

I have the field like this DataKeyNames = "id1, id2"

However, i don't know how to access the DataKeyNames individualy. For example. How do you access the first ID for the for a given row or the 2nd ID for a given row????

View 1 Replies

Forms Data Controls :: Handle Multiple DataKeyNames?

Mar 17, 2010

I have these line of code:

[Code]....
When i debug i get an error that says: 'System.Data.DataRowView' does not contain a property with the name 'job_id'and sometimes 'System.Data.DataRowView' does not contain a property with the name 'pub_id'I need to get the appropriate value for the selected row. GridView only output Jobs results or Publishers results, the problem is when the user clicks select button beside the record, i get the error i mentioned above.

View 3 Replies

Data Controls :: How To Pass 2 DataKeyNames When Deleting Row From Gridview

May 7, 2015

HTML:
<asp:GridView ID="GridView1" runat="server" DataKeyNames="G_Name, Param_ID" AutoGenerateColumns="False" Width="100%" PageSize="8" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging">
<Columns>

[code]...

Since I am using 2 DataKeyName is Gridview, so I have to pass both the DataKey while deleting Row from Gridview(using "Image Button" of Gridview).I tried it using below lines:

string name = GridView1.DataKeys[gvrow.RowIndex].Value["G_Name"].ToString();
string id = GridView1.DataKeys[gvrow.RowIndex].Value["Param_ID"].ToString();

View 1 Replies

Forms Data Controls :: Retrieve GridView DatakeyNames In Javascript?

Mar 30, 2011

I have specified DatakeyNames for a GridView control in my aspx page.I need to retrieve the Datakeys in javascript.How can this be achieved?

View 4 Replies

Forms Data Controls :: Grid View Current Row's Datakeynames?

Nov 19, 2010

i'm getting error on finding control from grid's row.control is an imagebutton which is placed inside a template field.my requirement is if add to cart button is clicked and if that particular book has its volums then it should show message that you need to see its detail and then after selecting its volume you can add it to cart...but i'm trapped in where i'hv to attach bookcod with querystring which is in datakey names of grid. The datagrid has one column only and thats template field..

[Code]....

View 6 Replies

Forms Data Controls :: Columns In Gridview DataKeyNames Still Being Set To Null?

Jun 24, 2010

I have two columns in my Gridview marked false for the visible property but which are clearly listed in the DataKeyNames that are still getting set to null in my database table on update.

The first one is a column MId# which is a type int. It starts as 0 but on edit is turned into null. The Second is RequireSKU which is also converted to null.

View 4 Replies

Forms Data Controls :: DataKeyNames & DataKeys Not Working On Other Pages?

Feb 21, 2011

When the page is displayed have labels, textboxs, and dropdownlists on top part of the page then the gridview at the bottom with the page numbers at the bottom of the gridview. Create the columns and add data to the gridview programmatically with several hidden columns. Use DataKeyNames on the source page and use DataKeys in VB.Net code behind to get data from the hidden column cells of the selected row. On the
first page when a row is selected, the textboxes and dropdownlists have thecorrect information from the gridview hidden columns. When select another page from pages numbers at the bottom of the gridview and select a row from the new page, get theinformation from the hidden column from the first page andcorrect data from the columns that are displayed onnewly selected page.

View 1 Replies

Forms Data Controls :: DataKeyNames In GridView When Using Dictionary As DataSource?

Jul 10, 2010

how can I specify DataKeyNames for a GridView when using a dictionary as DataSource?

[Code]....

In this example I would like to use "cat", "dog", "llama" and "iguana" as DataKeys for the four rows.

View 2 Replies

Forms Data Controls :: Two DataLists Bound To One GridView With Multiple DataKeyNames?

Mar 11, 2010

I have a gridView, with two DataKeyNames: MemberID, and CommitCustomerID.

One DataList has this sql statement:

SELECT * FROM [tblMemberProfile] WHERE MemberID = @MemberID

It pops up perfectly fine.

I also have another DataList with this statement:

SELECT * FROM [Incidents] WHERE CustomerID = @CommitCustomerID

I know this sql command works I have tested it with my data.

However I dont think the DataList is getting the proper value for the selected row in this DataLists case.

How can I make sure when I select the row in the GridView the proper parameters are going to the proper DataList sql statements?

View 1 Replies

Data Controls :: How To Access GridView DataKeyNames On Client Side When Using JQuery

May 7, 2015

I am did Gridview delete and rebind data using json and jquery like this

<script type="text/javascript">
$(document).ready(function () {
$(".deleteGridRecord").click(function () {
//Get the Id of the record to delete
var record_id = $(this).attr("id");

[Code] ....

But i want to set DataKeyNames  properties of grid view in above code dynamically how can do this....

View 1 Replies

Data Controls :: Get Value Of DataKey (DataKeyNames) Of Child (Nested) GridView On RowCommand

May 7, 2015

How to get grid view datakey value in nested grid view in gridview_RowCommand

I have used this code but here it will not detecting grid view name

protected void gvDetails_RowCommand(object sender, GridViewCommandEventArgs e) {
string tempid = "";
switch (e.CommandName) {
case "cmdbtn":
int currentRowIndex = Convert.ToInt32(e.CommandArgument);

[Code] ....

I have used this code but here it will not detecting grid view name...

View 1 Replies

Web Forms :: Add A DataList Databound Value Inside A FormViews DataBound Value

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

Custom Server Controls :: Binding UserControl Property To Page Property?

Sep 15, 2010

So what I'm trying to accomplish is this

[Code]....

The user control has public properties named accordingly and the page has protected properties accordingly which I've verified have the desired values.

For some reason the values are always empty strings or 0s in the usercontrol, no matter what the page property is.

View 1 Replies

Changing Formview DataKeyNames In C#?

Apr 17, 2010

I need to change my DataKeyName for a Formview in Code, but I get the error

cant convert string to [string]

How do I change the DataKeyNames programatically? It has just on DataKeyname, not an array.

View 3 Replies

Response.Redirect But Retain DetailsView DataKeyNames ID?

Apr 10, 2010

I have a nested master page with a detailsview in one of the <asp:contents>.

Now within the <asp:contents>. above I have 2 contentplaceholders.

[Code]....

Then on my contentplaceholder "NestMainBody" I have another detailsview control with a standard button which is outside the detialsview.

What I want to do is click on this button and be redirected to another page which has content in the
NestMainBodyRight but not loose the specific ID's that are on the other Gridviews.

View 6 Replies

DataSource Controls :: Difference Between Dbo.Property And Property?

Apr 3, 2010

I wondered what the difference between

'dbo.Property' and 'Property'

would be in an sql query

View 2 Replies

Asp.net - How To Populate GridView.DataKeyNames, Constructing Array From Within A Loop

Mar 10, 2010

I have to set GridView.DataKeyNames(This is really a question about the syntax for a string array, in VB.Net.)

I am discovering the PrimaryKey columns names from within a loop, ie:

For Each fld As IEntityField In Me.llbDataSource.EntityCollection(0).PrimaryKeyFields 'fld.Name ' this is where the column name is stored, so I have to get this into an array Next I can not use this syntax.

GridView.DataKeyNames = new string() { "PowRatHP", "Voltage", "Phases", "Poles", "Drive" }

So, basically, how does one declare a string array (as required by GridView.DataKeyNames), and then populate the elements of the array from within a loop?

View 3 Replies

Populating DataKeyNames When Binding Generic List To Gridview

Feb 15, 2010

I have a generic List which is populated with an object which has properties like FirstName, Surname etc.

If I bind a gridview to the list with autocompletecolumns = true, the Gridview displays the data in the List.

The code looks like:

[code]....

My question is:

How do I populate the DataKeyNames with the properties (FirstName, Surname) contained in the object that is contained in each element of the Generic List?

View 4 Replies

C# - DataKeyNames Coming Up As Undesired Update Parameters In GridView?

Oct 18, 2010

I have defined the following in my gridview markup (simplified):

<asp:GridView ID="grvReport" runat="server" DataSourceID="odsReport"
AutoGenerateColumns="False" DataKeyNames="EntryDate,EmployeeNumber">

Then I define my datasource's update parameters as such:

<UpdateParameters>
<asp:Parameter Name="ID" Type="Int32" />
<asp:Parameter Name="IsJustified" Type="Boolean" />

[code]...

View 2 Replies







Copyrights 2005-15 www.BigResource.com, All rights reserved