Forms Data Controls :: GridView PageIndexChanging And RowCommand Not Returning E.CommandArgument
Dec 1, 2010I have GridView in UserControl (ascx) who is in another ascx.
[Code]....
I have GridView in UserControl (ascx) who is in another ascx.
[Code]....
I'm trying to retreive values entered by users in the textboxes in the footer of the gridview and insert these values into another sql table.My code is as follows :-
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName.Equals("addnew"))
{
TextBox t1 = (TextBox)GridView2.FooterRow.FindControl("tfrm");
string frm = t1.Text;
TextBox t2 = (TextBox)GridView2.FooterRow.FindControl("tsub");
string sub = t2.Text;
string cmd = "insert into suggestions values('" + frm + "','" + sub + "','c','c')";
con.Open();
SqlCommand com = new SqlCommand(cmd,con);
int a = com.ExecuteNonQuery();
GridView2.DataBind();
con.Close();
}
}
But the strings 'frm' and 'sub' returns null values.
Ask for confirm on Gridview pageindexchanging
View 5 RepliesI cant for the life of me get the PageIndexChanging event to fire. Please advice.
<asp:GridView ID="gridViewTransactionList" runat="server" AutoGenerateColumns="False"
AllowPaging="True" BackColor="White" BorderColor="#3366CC" BorderStyle="Solid"
BorderWidth="1px" CellPadding="4" PageSize="10"
onpageindexchanging="gridViewTransactionList_PageIndexChanging"
ondatabinding="gridViewTransactionList_DataBinding"
onpageindexchanged="gridViewTransactionList_PageIndexChanged">
<Columns>
<asp:BoundField ItemStyle-Width = "150px" DataField = "RowNumber" HeaderText = "RowNumber" />
</Columns>
<RowStyle BackColor="#D7E5F5" ForeColor="#0F253F" CssClass="gridViewTransactionList" />
<AlternatingRowStyle BackColor="#F5F9FD" ForeColor="#0F253F" />
<FooterStyle BackColor="#99CCCC" ForeColor="#0F253F" />
<PagerStyle BackColor="#99CCCC" ForeColor="#0F253F" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
<HeaderStyle BackColor="#538ED5" Font-Bold="True" ForeColor="#0F253F" />
</asp:GridView>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnConfirmDeletetransaction" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="gridViewTransactionList"
EventName="PageIndexChanging" />
</Triggers>
</asp:UpdatePanel>
protected override void OnInit(EventArgs e)
{
gridViewTransactionList.PageIndexChanging += new GridViewPageEventHandler(gridViewTransactionList_PageIndexChanging);
gridViewTransactionList.DataBind();
}
protected void gridViewTransactionList_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
DataTable dataTable;
gridViewTransactionList.PageIndex = e.NewPageIndex;
if (Session["TransactionDataTable"] != null)
{
dataTable = (DataTable)Session["TransactionDataTable"];
gridViewTransactionList.DataSource = dataTable;
gridViewTransactionList.DataBind();
}
}
In a webform I have two textbox (txtDNI and txtAPE), 2 buttons (b1 and b2), 1 gridview (myGV) and 2 functions (dt1 and dt2) that return a DataTable txtDNI will be a parameter for dt1 function and txtAPE will be a parameter for dt2 function
DNI [_______] (b1)
APE [_______] (b2)
[NOM |APE |DNI |DIR |OCUP ]
============================
[ | | | | ]
[ | | | | ]
[ | | | | ]
[ | | | | ]
============================
[ 1 2 3 4... ]
When I press b1 myGV will be fill with the dt1 function's datatable and when I press b2 myGV will be fill with the dt2 function's datatable myGV allows paging=true and when I press the next index (2 or other) It appears a PageIndexChanging error. So the pagination isn't automatic and I have to code the PageIndexChanging event When I use a ObjectDataSource and I connect it with myGV the PageIndexChanging error dessapears and the pagination is automatic The problem is the ODS only have a one selectfunction (dt1 or dt2) but not both and the configuration is on design time
The same happen with the PageIndexChanging event where I fill myGV again (with dt1 or dt2) and set the new index (myGV.PageIndex = e.NewPageIndex) and What is the problem?? ... the problem is, for example, when the user erase txtDNI and change index of pagination ... the PageIndexChanging event is fired and call the dt1 function but the txtDNI(parameter) is empty and occurs an error, the function returns an empty datatable and myGV is empty too for avoid this I create viewstates variables for each function, so I have a 2 viewstates and fill them when the user press b1 or b2 When user press the pagination, the PageIndexChanging event catch the viewstate variable and convert it into a datatable and the problem of the automatic pagination is controled The problem is I don't have 1GV in the webForm I have 5GV in some pages... and I try to avoid...
1. all the code in the PageIndexChanging events of each GV in the webform.
2. use the viewstate variables
can i add commandname or commandargument to a checkbox-control in a gridview?
View 5 RepliesI am working on object data source and datagridview. I have given object data source to the grid view as the data source of grid. The issue which i m facing is that whenever i click on next page(like 2 or 3 or 1) it takes lot of time to fire. although it is fired but I have to wait a minute or two and then it fired.
Whenever I click any event(e.g. next page , page 5 ,3 or edit etc) of gridview it does not give response. If I wait for a minute then click one of event then it performs, and then again I have to wait to fire other event.
i am trying to set paging using the following code in pageload event.
GridView1.DataSource = ourdataset.Tables("Products")
GridView1.DataBind()
when i select the page button the parameter value ourdataset.Tables("Products") is set to nothing ?
Protected
Sub GridView1_PageIndexChanging1(ByVal sender
As
Object,
ByVal e
As System.Web.UI.WebControls.GridViewPageEventArgs)
Handles
GridView1.PageIndexChanging
GridView1.DataSource = SortDataTable(ourdataset.Tables("Products"),
True)
i have a gridview which Pagesize set to 5. There will be some error while i click to page2, i knew it was caused by what but i got no good idea how to solve it.
Me.GridView.DataSource = DT.DefaultView
Me.GridView.DataBind()
For x As Integer = 0 To DT.Rows.Count - 1
If DT.Rows(x).Item("status") = "Verifying" Then
Me.GridView.Rows(x).BackColor = Drawing.Color.Tomato
ElseIf DT.Rows(x).Item("status") = "Processed" Then
Me.GridView.Rows(x).BackColor = Drawing.Color.CadetBlue
End If
Next
I have a gridview and I have a link button that fires the onrowcommand event. In the method I have
protected void SelectCreditCard(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
}
But I get the error input string in incorrect format.
I have a gridview set up as follows:
[Code]....
Now, as you can see I've set up the commandargument, and was expecting to get to that in my code behind file. My code is as follows:
[Code]....
Ok...so far so good, and as long as I'm the only one working on the system it works fine. The problem is if this scenario happens:
* I go to the page and look at the gridview
* Someone else enters a new record into the database, causing the first row to contain a new record (not displayed in my browser)
* I click select.
What happens then is that, for some odd reason, I will get n numbers higher than the one I actually selected (n = num_added -num_removed).
I was under the impression that the commandargument wouldn't change for my session as long as I didn't refresh the gridview...?... There are no ajax or anything else messing with postbacks or viewstate as far as I can see..
I am getting error as Procedure 'storedproc2' expects parameter '@NewMessage', which was not supplied.Basically in this I am taking the text in one cell and add sometext to it and update in the next cell of the row.
My .aspx contains
<asp:SqlDataSource ID="mySource1" runat="server" ConnectionString="<%$ myConn %>"
SelectCommand="storedproc1" SelectCommandType="StoredProcedure"
UpdateCommand="storedproc2" UpdateCommandType="StoredProcedure">
<SelectParameters>
<asp:SessionParameter Name="AcctId" SessionField="AcctId" />
</SelectParameters>
<UpdateParameters>
<asp:SessionParameter Name="AcctId" SessionField="AcctId" />
<asp:SessionParameter Name="Id" SessionField="Id" />
[code]...
End Sub
asp:GridView ID="Departments" runat="server" AutoGenerateColumns="False" DataKeyNames="EntityID" DataSourceID="AccessDataSource1"
BorderColor="White" BorderWidth="0px" Height="79px" Width="232px">
<Columns>
<asp:BoundField DataField="EntityName" HeaderText="Department"
SortExpression="EntityName" />
<asp:TemplateField>
<ItemTemplate>
--->>> <asp:Button ID="btnJoin" runat="server" CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>"
CommandName="Join" Text="Join" BackColor="#F2F0FF" Font-Bold="True" />
</ItemTemplate>
</asp:TemplateField>
I have several Gridviews that display data from the same table. They are separate for visual effect (Different characteristics). If I select on an item from any grid they can all execute the same code (Show Details).I'm using a row command GridViewCommandEventArgs.Is it possible/How can you get the gridview name from the row command so that I can use just one subroutine.
Sub GV_RowCommand(ByVal sender
As
Object, ByVal e
As GridViewCommandEventArgs)
If e.CommandName = "select" Then
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = ????.Rows(index)
[Code]....
When "btnEdit" is clicked, "RowCommand" event is raised where I want to the catch row index of the row which was set to Edit mode.The Reason for doing this is ......I am using paging with page size = 4. When I click the fourth row (suppose), page is postedback and then the user has to scrolldown to get to the edit row
I have one button and gridview.
The button is located at the outside of gridview.
By clicking the button, I want to trigger the RowCommand event in that grid.
Obviously, I know that I can create same function to run it in that button to achieve samething in the RowCommand event.
However, I would like to know that techinically, I can simply trigger the RowCommand event from outside of GridView.
In my database table I have ID,FirstName,LastName,Address fields.I have bound the FirstName,LastName in Gridview with Eval Method.But have not bound the address coz I m not dispalying address.Now there are textboxes below the gridview which gets filled when I click the edit button in gridview with values in the gridvoew row.I am getting the FirstName and LastName (using find control in rowcommand) but not the address.How can I get the address
View 3 Repliesi am using gridview for data manipulation. in gridview i have added a Edit and a delete button as a template field like
<asp:TemplateField HeaderText="Edit">
I'm trying to fire the RowCommand event on a DataGrid control. I've previously done that, but not in this precise case.
Actually I'm working on someone else code so I can't really change the structure of his page excepted if it's really necessary.
The code of the page is heavy, so I've summarized the problem in a small project and the page behaves the same way too.
Basically I have a GridView which I bind to a DataSet. According to those data, I sometimes need to add, at the end of a row, a "Details" button (a LinkButton).
By pushing this button, I want to show a second GridView containing those details.
Let's add to this that the columns number of the first GridView is variable, those LinkButton need to be added dynamically.
The first GridView is generated without any problem and when my mouse is over one of the LinkButton, I can see that the link is something like "javascript:__doPostBack('dataGridView$ctl02$lnkDetail','')". When I click on this link and debug step by step : Page_Init, Page_Load, OnPrerender, RowDataBound but no RowCommand, and I don't know why!
In the exemple, I've explicitly set the EnableViewState to true from what I've read here and there, but nothing's changed.
[code]...
And the code of my .aspx :
[Code]....
I have gridview+sqldatasource. In gridview i have button DELETE. But i want on click this button for some rows execute DELETE command other rows UPDATE. I did:
[Code]....
@index - DeleteParametrs in sqldatasource.
But DELETE works and DELETEVIRTUAL doesn't. Then i insert sourceMain.Delete() in rowcommand after sourceMain.DeleteCommand ... But it's doesn't help me.
It has to do with the RowCommand 'Cancel'. When clicking on my Edit button for a row, the GridView puts the row into edit mode without a problem (I have no code for the Edit command, I let the control do everything).
Once in Edit mode, if I click the Cancel button (again, I have no code handline this RowCommand, I let the control handle it (like i do with many other GridViews)) I get the following exception:
"System.InvalidOperationException: Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control."
I'm having a hard time figuring this one out, i got a gridview with a sqldatasource that is loading its content, to custom columns a ButtonField and a Boundfield, both are loading in page load event,When i click the ButtonField its trigerring the rowcommand event but i can't figure out how to read the value of the cells wich i need to get for the next step of the program.Here what i got so far :- The aspx
[Code]....
- the aspx.vb
[Code]....
I'm getting the correct index and command name but i cant get the button value or bound field value either.
i am using a grid view . i have added a linkbutton in cell[0]. when clicking on this butoon the below event is working.. actually i tried to get the cell[1].text... but not getting any cell values except cell[0].text... get the cell[1].text value.
protected void grvSchedule_RowCommand(object sender,
GridViewCommandEventArgs e)
{ if (Convert.ToInt32(e.CommandArgument) == 1)
{LinkButton lbt = (LinkButton)e.CommandSource;
GridViewRow grvRow = (GridViewRow)((DataControlFieldCell)lbt.Parent).Parent;
txtTime.Text = grvRow.Cells[0].Text;
//txtTime.Text = grvRow.Cells[1].Text;
mvwApp.ActiveViewIndex = 1;
FillToSavePage();
hfdConsId.Value = ddlConsultant.SelectedValue.Trim();
}
}
i tried something like this but did not work:
GridViewRow row = (GridViewRow)(((Repeater)e.CommandSource).NamingContainer);
Repeater _rpt1 = row.Cells[8].FindControl("rptReg") as Repeater;
error:
Unable to cast object of type 'System.Web.UI.WebControls.Button' to type 'System.Web.UI.WebControls.Repeater'.
is there a way i can have the below code in `OnRowCommand` event using GridView?
actually i am trying to delete the row from the gridview control and when the user click on it and i am grabbing the mulitple ids and passing to SP and update the table and `databind the gridview`
GridViewRow row = gv.SelectedRow;
Repeater _rpt = gv.Rows[e.RowIndex].Cells[8].FindControl("rptReg") as Repeater;
Repeater _rpt1 = gv.Rows[e.RowIndex].Cells[9].FindControl("rptVisitor") as Repeater;
foreach (RepeaterItem item in _rpt.Items)
{
TextBox _txt = item.FindControl("txtId") as TextBox;
TextBox _txt1 = item.FindControl("txtName") as TextBox;
//update db
}
get the current selected row in the RowCommand event of a GridView in asp.net. The GridView has a button in an Item Template as shown below,
[Code]....
that I can pass values from GridView to a page. I tried following code but I could
not get the row number.