Disabling Bound Fields through code


You can make a bound field as read only or hide the Lookupbutton of the bound field through code in the page load event.


For example



AxBoundField boundField = AxGridView1.Columns[i] as AxBoundField;


boundField.ReadOnly = true;



 


or


 



AxBoundField boundField = AxGridView1.Columns[i] as AxBoundField;


boundField.LookupButtonDisplaySettings = LookupButtonDisplaySettings.Never;



 


If they do want to hide the lookup for specific rows, then they should use a  template field instead of the AxBoundField. For example ,


 


 In the below code DataSet Name is DemoSet, Table Name is Table1 and FieldName is AccountNum


asp:TemplateField ConvertEmptyStringToNull=”False”


            HeaderText=”<%$ AxLabel:@SYS1996 %>” SortExpression=”AccountNum”>


            <EditItemTemplate>


                <asp:TextBox ID=”TextBox1″ runat=”server”


                    Columns=”<%$ AxDataSet:DemoSet.Table1.AccountNum.DisplayLength %>”


                    Enabled=”<%$ AxDataSet:DemoSet.Table1.AccountNum.AllowEdit %>”


                    MaxLength=”<%$ AxDataSet:DemoSet.Table1.AccountNum.StringSize %>”


                    Text='<%# Bind(“AccountNum”) %>’></asp:TextBox>


                <dynamics:AxLookup ID=”AxLookup1” runat=”server” DataLookupField=”AccountNum”


                    DataSet=”DemoSet” DataSetView=”Table1″ TargetControlId=”TextBox1″


                    Visible=”<%$ AxDataSet:DemoSet.Table1.AccountNum.AllowEdit %>”>


                </dynamics:AxLookup>


            </EditItemTemplate>


            <ItemTemplate>


                <asp:Label ID=”Label1″ runat=”server” Text='<%# Bind(“AccountNum”) %>’></asp:Label>


            </ItemTemplate>


        </asp:TemplateField>


 


 


Code Behind to hide the lookup control conditionally and disable the cell


 


protected void AxGridView1_RowDataBound(object sender, GridViewRowEventArgs e)


    {


        if (e.Row != null && e.Row.RowType == DataControlRowType.DataRow)


        {


       /*  disable the thrid column which displays accountnum and hide the lookup if the second field value is 1


            DataSetViewRow dataRow = (DataSetViewRow)e.Row.DataItem;


            bool isInternalProject = dataRow.GetFieldValue(“Field2”).ToString() == “1”;


 


            if (isInternalProject)


            {


                Control c = e.Row.Cells[2].FindControl(“AxLookup1”);


                if ( c!= null)


                    c.Visible = false;


                e.Row.Cells[2].Enabled = false;


            }


        }


 

Comments (4)

  1. Thank you for another good example. Keep them coming 🙂

  2. Thank you for another good example. Keep them comming 🙂

  3. Chandra Shekhar Mantha says:

    Can we show a custom lookup for a field whose AllowEdit Property is set to No at the AX table level????

    please help

  4. Ehtasham Ur Rahman says:

    Hi Friends!

    I am having a trouble, please guide me as I am strucked and cannot work further…

    I am having a form on EP which have the the dataSet from AX. Form is opened in Insert Mode. This form is of "Leave Request". I need to perform some action on the basis of some values. All the fields on the form are AxBoundFields used in AxGroups. For example I want to calculate the date difference between the "Leave Start Date" and "Leave End Date". Should I need to attach the event with "OnDataChanged" event of "Leave End Date" AxDataBound field? I am doing bt it is not effecting.

    Secondly, there is a AxCheckBoundField, I need to hide/unhide some AxBoundFields on the basis of that AxCheckBoundField. I attached the event , it is hiding and unhiding correctly bt the problem is when the event is fired, all the values in AxBoundField are lost…. I am not understanding, what's happening..

    Please reply me as soon as possible… bcz it is pending my whole work

    Remember, I am setting the page as Insert Mode in Page_load event.

    Thanks in Advance.

    Ehtasham.

    ehtashamrahman@gmail.com