Click here to Skip to main content
15,886,773 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I'm using a single click event to edit cell of my gridview, my specific problem is that I have to validate a DataTable column called "indicador", if indicador is true I have to use a textbox and false use Dropdownlist.

Here is my GridView
ASP.NET
 OnRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand" 
            OnRowUpdating="GridView1_RowUpdating"  
            ShowFooter="True" >
            <columns>
                <asp:ButtonField  Text="SingleClick" CommandName="SingleClick" Visible="false"/>
                <asp:TemplateField HeaderText="Id">
                    <itemtemplate>
                        <asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>'>                        
                    </itemtemplate>               
                
 <asp:TemplateField HeaderText="Clasificación IMM">                   
                    <itemtemplate>
                        <asp:Label ID="LbClasificacionIMM" runat="server" Text='<%# Eval("clasificacion_imm")%>'>
                        <asp:DropDownList ID="ddlClasificacionIMM" runat="server" AutoPostBack="false" CausesValidation="true" Visible="false">
                            <asp:ListItem>
                            <asp:ListItem>La zona no tiene potencial
                            <asp:ListItem>La zona es agricola de autoconsumo
                            <asp:ListItem>En la zona existe zona franca industrial
                            <asp:ListItem>Pecuario mercado interno
                         
                        <asp:TextBox ID="txtClasificacionIMM" runat="server" Text='<%# Eval("clasificacion_imm") %>' Visible="false">            
                    </itemtemplate> 
                
</columns>




Datatable
C#
private DataTable _sampleData
        {
            get
            {
                DataTable dt = (DataTable)Session["TestData"];

                if (dt == null)
                {
                    // Create a DataTable and save it to session
                    dt = new DataTable();
                    dt.Columns.Add(new DataColumn("id", typeof(int)));
                    dt.Columns.Add(new DataColumn("nombre_proyecto", typeof(string)));
                    dt.Columns.Add(new DataColumn("total", typeof(string)));
                    dt.Columns.Add(new DataColumn("clasificacion_imm", typeof(string)));
                    dt.Columns.Add(new DataColumn("ponderacion_imm", typeof(string)));
                    dt.Columns.Add(new DataColumn("clasificacion_hab", typeof(string)));
                    dt.Columns.Add(new DataColumn("ponderacion_hab", typeof(string)));
                    dt.Columns.Add(new DataColumn("clasificacion_zona", typeof(string)));
                    dt.Columns.Add(new DataColumn("ponderacion_zona", typeof(string)));
                    dt.Columns.Add(new DataColumn("clasificacion_conec", typeof(string)));
                    dt.Columns.Add(new DataColumn("ponderacion_conec", typeof(string)));
                    dt.Columns.Add(new DataColumn("indicador", typeof(bool)));


                    dt.Rows.Add(new object[] { 1, "Proyecto 1", "80", "23", "25", "23.68", "21", "potencial", "3", "Conectividad", "2", "true" });
                    dt.Rows.Add(new object[] { 2, "Proyecto 2", "32", "15", "24", "12.68", "21", "potencial", "3", "Conectividad", "8", "true" });
                    dt.Rows.Add(new object[] { 3, "Proyecto 3", "45", "44", "54", "12.68", "21", "potencial", "3", "Conectividad", "5", "true" });
                    dt.Rows.Add(new object[] { 4, "Proyecto 4", "12", "23", "26", "12.68", "21", "potencial", "3", "Conectividad", "9", "false" });
                    dt.Rows.Add(new object[] { 5, "Proyecto 5", "44", "22", "44", "12.68", "21", "potencial", "3", "Conectividad", "8", "false" });
                    dt.Rows.Add(new object[] { 6, "Proyecto 6", "21", "93", "12", "12.68", "34", "potencial", "7", "Conectividad", "7", "false" });

                    // Add the id column as a primary key
                    DataColumn[] keys = new DataColumn[1];
                    keys[0] = dt.Columns["id"];
                    dt.PrimaryKey = keys;

                    _sampleData = dt;
                }

                return dt;
            }
            set
            {
                Session["TestData"] = value;
            }
        }
Posted
Updated 25-Nov-15 3:53am
v2
Comments
Suvendu Shekhar Giri 25-Nov-15 10:11am    
Share your RowCommand event
Sinisa Hajnal 26-Nov-15 4:00am    
Have two columns corresponding to dropdown and text...use their values for the same column values before you update.

1 solution

inside "GridView1_RowDataBound"
C#
protected void Button1_Click(object sender, EventArgs e)
{
string categoryName = String.Empty;
string description = String.Empty;
DataTable dt = new DataTable();
dt.Columns.Add("CategoryName");
dt.Columns.Add("Description");
foreach (GridViewRow row in GridView1.Rows)
{
yourTextBox = ((TextBox)row.FindControl("yourTextBox ")).Text;
yourDdl = ((DropDownList)row.FindControl("yourDdl ")).SelectedItem.Value;
//now find the indicador
indicador = (YourControlType)row.FindControl("indicador")).Value;

if(indicador)
{
   yourTextBox.Visible = true;
   yourDdl.Visible = false;
   //Clear the values inside yourDdl  
}
else
{
   yourTextBox.Visible = false;
   yourDdl.Visible = true;
   //Clear the values inside yourTextBox
}
}


spell mistake may occur in above code. I didn't run this in my system, this logic will work and possibility is there you have to make some corrections.
 
Share this answer
 

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