Click here to Skip to main content
16,012,116 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Dear friend,
I have some problem when implementing the code in grid view.The error produce when i am databind the gridview control by coding.The following error are produced :

"Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control."

.cs code is :-

C#
double total = 0;
     db = new MCTAdminDataContext();
     var advance = (from t in db.Transactions
                    where t.IsChecked && t.IsConfirmed == true
                    select new
                    {
                        TransactionID = t.TransactionID,
                        RecordingDate = t.CreationDate,
                        TransactionDate = t.TransactionDate,
                        CreditAccount = t.CreditAccount,
                        DebitAccount = t.DebitAccount,
                        AccountNo = getAccountNo(t.AccountNo),
                        Type = t.TransactionType,
                        From = getName(t.DebitAccount, t.SpecifiedName, t.ClientOrCompanyName),
                        To = getName(t.CreditAccount, t.SpecifiedName, ""),
                        Amount = t.Amount,
                        For = t.Description,
                        Project = getProject(t.ProjectID),
                        Head = getHead(t.HeadID),
                        CompanyID = t.CompanyID
                    }).ToList();

     advance = (advance.Where(a => a.CompanyID.Equals(Session[SessionController.Session_CompanyId]))).ToList();

     if (!string.IsNullOrEmpty(drpEmployee.SelectedValue) && drpEmployee.SelectedValue != "0" && drpEmployee.SelectedValue != "--Select--")
     {
         advance = (from a in advance
                    where a.CreditAccount == Convert.ToInt64(drpEmployee.SelectedValue)
                    select a).ToList();

         total = advance.Sum(a => Convert.ToDouble(Convert.ToString(a.Amount).Replace(",", string.Empty)));

     }
     else
     {
         advance = (from a in advance
                    where a.Type.Contains("Receipt") || a.Type.Contains("Advance")
                    select a).ToList();
     }

     grdAdvance.DataSource = advance;
     grdAdvance.DataBind();->error find here


     return total;



.aspx code :-



XML
<asp:LinkButton runat="server" ID="Delete" OnClientClick="return confirm('Are you sure?');"
    Text='Delete' CommandArgument='<%#Eval("TransactionID" %>'---->Error produced here 
 CommandName="lnkDelete"></asp:LinkButton>


Please solve this problem as soon as possible..

Thanks in advanced !!
Posted

1 solution

As like below bold code set row index value. Then on delete get row index and get transaction id from data

XML
.gv_hide_column
{
    display: none;
}

<pre lang="HTML"><pre lang="xml">&lt;asp:BoundField DataField=&quot;<pre lang="xml">TransactionID&amp;quot; HeaderText=&amp;quot;<pre lang="xml">TransactionID&amp;amp;quot; ItemStyle-CssClass=&amp;amp;quot;gv_hide_column&amp;amp;quot;
                                    HeaderStyle-CssClass=&amp;amp;quot;gv_hide_column&amp;amp;quot; /&amp;amp;gt;

&amp;amp;lt;pre lang=&amp;amp;quot;xml&amp;amp;quot;&amp;amp;gt;&amp;amp;amp;lt;asp:ImageButton ID=&amp;amp;amp;quot;imgbtnDelete&amp;amp;amp;quot; Text=&amp;amp;amp;quot;Delete&amp;amp;amp;quot; runat=&amp;amp;amp;quot;server&amp;amp;amp;quot; OnClick=&amp;amp;amp;quot;imgbtnDelete_Click&amp;amp;amp;quot;
                                            &amp;amp;lt;b&amp;amp;gt;RowIndex=&amp;amp;amp;#39;&amp;amp;amp;lt;%# Container.DisplayIndex %&amp;amp;amp;gt;&amp;amp;amp;#39;&amp;amp;lt;/b&amp;amp;gt; ImageUrl=&amp;amp;amp;quot;~/Images/DeleteIcon.png&amp;amp;amp;quot; ToolTip=&amp;amp;amp;quot;Delete this user&amp;amp;amp;quot;
                                            Height=&amp;amp;amp;quot;16px&amp;amp;amp;quot; Width=&amp;amp;amp;quot;16px&amp;amp;amp;quot;  /&amp;amp;amp;gt;&amp;amp;lt;/pre&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;/pre&gt;</pre>




C#
<pre lang="cs">protected void imgbtnDelete_Click(object sender, EventArgs e)
    {
        try
        {
            ImageButton vImgbtnDeleteToGetRowIndex = sender as ImageButton;
            int vRowIndex = Convert.ToInt32(vImgbtnDeleteToGetRowIndex.Attributes["RowIndex"]);
            int vUserId = Convert.ToInt32(gvTestEditSequence.DataKeys[vRowIndex].Values["TransactionID"].ToString());
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900