启用的GridView /禁用校验动态添加行时 [英] Enable/Disable Validators in Gridview when adding row dynamically

查看:179
本文介绍了启用的GridView /禁用校验动态添加行时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有问题,禁用/启用验证为新添加行的GridView这是在更新面板,如果我删除更新面板,然后它的工作完美,如果我添加更新面板则停止工作。我创建示例页面。

I have issue to disable/enable validators for newly add row to gridview which is in Update panel, If I remove Update panel then it's worked perfect, and If I add Update panel then it stops working. I have created sample page.

Default.aspx的。

Default.aspx.

<head>     <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>     <script type="text/javascript">        $(document).ready(function () {            $('table > tbody > tr .wrapper [class*="onoff"] option:selected').each(function (index) {                adjustValidators(this);            });            $('[class*="onoff"] select').change(function () {                adjustValidators($('option:selected', this)[0]);            });        });                    </script></head>


<ajax:ToolkitScriptManager runat="server" ID="RadScriptManager1" AsyncPostBackTimeout="18000">    </ajax:ToolkitScriptManager><asp:MultiView ID="MultiView1" runat="server">    <asp:View ID="group_Group1" runat="server">        <div class="group group1">            <asp:Button ID="btnNext0_top" runat="server" Text="Next >>" OnClick="btnNext_Click" ValidationGroup="surveyValidate0" />                <asp:UpdatePanel runat="server" ID="UPNew" UpdateMode="Conditional">                    <ContentTemplate>                        <asp:GridView runat="server" ID="repeatregion_RRSectionSS" RegionName="RRSectionSS" AutoGenerateColumns="False" GridLines="None" CellSpacing="-1" CssClass="rrsectionss">                            <Columns>                                <asp:TemplateField>                                    <ItemTemplate>                                        <div id="wrapper_ONOFF" runat="server" class="wrapper onoff">                                            <div class='statement  onoff' id="statement_ONOFF" runat="server">                                                Required Validator :</div>                                            <div class='question  onoff' id="questionlayer_ONOFF" runat="server">                                                <asp:DropDownList runat="server" ID="question_ONOFF" ValidationGroup="surveyValidate0" Data='<%# Eval("ONOFF") %>' Val='<%# Eval("ONOFF_selectedValue") %>'>                                                    <asp:ListItem Text="Off" Value="-1"></asp:ListItem>                                                    <asp:ListItem Value="1" Text="On"></asp:ListItem>                                                </asp:DropDownList>                                            </div>                                        </div>                                        <div id="wrapper_testsssss" runat="server" class="wrapper testsssss">                                            <div class='statement  testsssss' id="statement_testsssss" runat="server">                                                Sample Text                                            </div>                                            <div class='question  testsssss' id="questionlayer_testsssss" runat="server">                                                <asp:TextBox runat="server" ID="question_testsssss" type="shortans" Columns='40' ValidationGroup="surveyValidate0" Text='<%# Common.DecodeXML(Eval("testsssss")) %>'></asp:TextBox>                                                <asp:RequiredFieldValidator ID="rfv_question_testsssss" runat="server" ValidationGroup="surveyValidate0" SetFocusOnError="true" EnableClientScript="true" ControlToValidate="question_testsssss" Display="Dynamic" Text="**" ErrorMessage="**" />                                            </div>                                        </div>                                    </ItemTemplate>                                </asp:TemplateField>                            </Columns>                        </asp:GridView>                        <asp:Button runat="server" ID="btnAddClick" Text="Add Section" OnClick="btn_Click" />                    </ContentTemplate>                </asp:UpdatePanel>            </div>        </asp:View>        <asp:View ID="group_Group2" runat="server">            <div class="group group2">                <asp:Button ID="btnPrevious1_top" runat="server" Text="<< Prev" OnClick="btnPrevious_Click" />                <asp:Button ID="btnSubmit" runat="server" Text="Submit" ValidationGroup="surveyValidate1" />            </div>        </asp:View>    </asp:MultiView>

<script type="text/javascript">        function pageLoad(sender, args) {            if (args.get_isPartialLoad()) {                $('table > tbody > tr .wrapper [class*="onoff"] option:selected').each(function (index) {                    adjustValidators(this);                });            }        }        function adjustValidators(ctrl) {            var id = ctrl.parentNode.id.replace('_question', '_rfv_question').replace('ONOFF', 'testsssss')            //            alert(ctrl.value);            if (ctrl.value == -1) {                ValidatorEnable(eval(id), false)            }            else {                ValidatorEnable(eval(id), true)            }        }    </script>

Default.aspx.cs。

 protected void Page_Load(object sender, EventArgs e)
{
    MultiView1.ActiveViewIndex = (MultiView1.ActiveViewIndex == -1) ? 0 : MultiView1.ActiveViewIndex;

    DataTable objData =new DataTable();
    if (ViewState["data"] != null)
    {
        objData = (DataTable)ViewState["data"];
    }
    else
    {
        objData = new DataTable();
        objData.Columns.Add("testsssss");
        objData.Columns.Add("ONOFF");
        objData.Columns.Add("ONOFF_selectedValue");
        objData.Rows.Add(objData.NewRow());
        ViewState["data"] = objData;
    }

    if (!IsPostBack)
    {
        repeatregion_RRSectionSS.DataSource = objData;
        repeatregion_RRSectionSS.DataBind();
    }

}
protected void btnNext_Click(object sender, EventArgs e)
{
    MultiView1.ActiveViewIndex += 1;
}

protected void btnPrevious_Click(object sender, EventArgs e)
{
    MultiView1.ActiveViewIndex -= 1;
}

protected void btn_Click(object sender, EventArgs e)
{
    DataTable objData = (DataTable)ViewState["data"];

    objData.Rows.Add(objData.NewRow());
    repeatregion_RRSectionSS.DataSource = objData;
    repeatregion_RRSectionSS.DataBind();
    ViewState["data"] = objData;
}

在单击添加然后项目被添加到GridView的验证,但未被禁用。

when Click on add then item get added to gridview but validators are not disabled.

感谢和问候
萨迪克没胆

Thanks and Regards Sadiq Modan

推荐答案

一些重新搜索和招我有ValidatorEnable(EVAL(ID),假)通过document.getElementById(id)的解决方案改变后的eval,它的工作过我的。

After some re-search and trick I have solution change eval in ValidatorEnable(eval(id), false) with document.getElementById(id) and it's worked for me.

感谢您宝贵的回应。

这篇关于启用的GridView /禁用校验动态添加行时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆