4
Answers

Making some column editable and some column noneditable using the asp:datagrid

Arthi Dev

Arthi Dev

12y
1.9k
1
Hi,
   In my datagrid i have 9 columns. In that 4 column should be noneditable. If i use the readonly property in the design mode. Always the column in noneditable. But for me when i click on the checkbox, if it is true then that particular 4 column should be noneditable . If the checkbox is false, all the 9 column should be editable. For me all the column editable is working fine. But i have problem with the column nonediting.
In the design page i wrote as:

<

asp:TemplateColumn HeaderText="IPAddress">


<ItemTemplate>


<asp:TextBox ID="txtaddress" runat="server" Text='<%# DataBinder.Eval(Container, &#13;&#10; "DataItem.Ipaddress") %>' Enabled="false" />


</ItemTemplate>


<EditItemTemplate>


<asp:TextBox ID="txtaddress" runat="server" Text='<%# DataBinder.Eval(Container, &#13;&#10; "DataItem.Ipaddress") %>'/>


</EditItemTemplate>



</asp:TemplateColumn>

In the edit command i wrote as below

((TextBox)e.Item.FindControl("txtaddress")).ReadOnly = true;

Please help me with this question.

Answers (4)
0
Santhosh Kumar Jayaraman

Santhosh Kumar Jayaraman

NA 9.9k 2.2m 12y
aspx code:


<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="NoneditableFieldsinGrid._Default" %>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <script type="text/javascript" language="javascript">
        function checkitem(checkBox, textBox1) {
         
            var e = document.getElementById(textBox1.id);
            var f = document.getElementById(checkBox.id);
            if (f.checked == true) {
                e.disabled = true;
            }
            else {
                e.disabled = false;
               
            }
           
        }
    </script>
    <asp:GridView AutoGenerateColumns="false" ID="GridView_Classes" runat="server" OnRowDataBound="GridView_Classes_RowDataBound">
        <Columns>
            <asp:TemplateField HeaderStyle-HorizontalAlign="Left" ItemStyle-Width="3%" HeaderStyle-BackColor="steelblue"
                HeaderStyle-ForeColor="White" HeaderStyle-BorderWidth="0" HeaderStyle-BorderStyle="Dashed"
                HeaderStyle-BorderColor="Black">
                <HeaderTemplate>
                    <asp:CheckBox ID="CheckBox_SelectAll" runat="server"  /></HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox_Select" runat="server" /></ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Editable" ItemStyle-Width="30%"
                HeaderStyle-BackColor="steelblue" HeaderStyle-ForeColor="White" HeaderStyle-BorderWidth="0"
                HeaderStyle-BorderStyle="Dashed" HeaderStyle-BorderColor="Black">
                <ItemTemplate>
                    <asp:TextBox ID="TextBox_Editable" runat="server" /></ItemTemplate>
                <HeaderStyle HorizontalAlign="Left" />
                <ItemStyle Width="10%" />
            </asp:TemplateField>
            <asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="NonEditable" ItemStyle-Width="30%"
                HeaderStyle-BackColor="steelblue" HeaderStyle-ForeColor="White" HeaderStyle-BorderWidth="0"
                HeaderStyle-BorderStyle="Dashed" HeaderStyle-BorderColor="Black">
                <ItemTemplate>
                    <asp:TextBox ID="TextBox_NonEditable" runat="server" /></ItemTemplate>
                <HeaderStyle HorizontalAlign="Left" />
                <ItemStyle Width="10%" />
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</asp:Content>

0
Santhosh Kumar Jayaraman

Santhosh Kumar Jayaraman

NA 9.9k 2.2m 12y
I attached aspx file.  This is my code behind's content.



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace NoneditableFieldsinGrid
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            List<Student> Students = new List<Student>(){
                new Student() { Name = "Jack", Age = 15, StudentId = 100 },
                new Student() { Name = "Smith", Age = 15, StudentId = 101 },          
                new Student() { Name = "Smit", Age = 15, StudentId = 102 }
            };
            GridView_Classes.DataSource = Students;
            GridView_Classes.DataBind();
        }

        protected void GridView_Classes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex >= 0)
            {
              
                string chkClientId = e.Row.FindControl("CheckBox_Select").ClientID;
                string txt2ClientId = e.Row.FindControl("TextBox_NonEditable").ClientID;
               ( (CheckBox)e.Row.FindControl("CheckBox_Select")).Attributes.Add("onclick", "javascript:checkitem(" + chkClientId + ","+ txt2ClientId + ");");
            }
        }
    }

    public class Student
    {
        public string Name { get; set; }
        public int StudentId { get; set; }
        public int? Age { get; set; }
    }
}

0
Arthi Dev

Arthi Dev

NA 3 1.9k 12y
Hi,
   Thanks for the help. But sorry i Couldn't open the attachment. I need very urgent solution.
0
Santhosh Kumar Jayaraman

Santhosh Kumar Jayaraman

NA 9.9k 2.2m 12y
Please check the attached solution.It might help you


-Santhosh