从更新按钮单击gridview获取gridview的editItem模板字段中的值

时间:2013-08-24 09:04:55

标签: javascript asp.net

我有一个gridview。有五列。 Roleid,用户名,密码,角色,动作。所有列都是模板字段。 在“操作”列中,我在项目模板中有“编辑”按钮,在同一列中,我在编辑项模板中有“更新和取消”链接按钮。当我单击操作列的编辑按钮时,更新和取消按钮将出现在操作列中,并且gridview将进入编辑模式中带有文本框的编辑模式。

我希望验证用户在编辑模式时在gridview的文本框(用户名)中输入的内容。

当gridview处于编辑模式且文本框可见时,我基本上想要使用javascript获取所点击行(更新按钮)的用户名列值。

我尝试了以下但不起作用。

错误:0x800a138f - JavaScript运行时错误:无法获取未定义或空引用的属性“单元格” 我想获取TextBox1(编辑项目模板)的值。当我点击editbutton(项目模板)时,TextBox1在gridview的编辑模式下可用。     <%@ Page Language =“C#”AutoEventWireup =“true”CodeBehind =“GridViewJavaScript.aspx.cs”Inherits =“GridViewJavaScript.GridViewJavaScript”%>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function gridviewvalidation() {
            debugger;
            var gridview = document.getElementById("GridView1");
            var text = gridview.rows[gridview.selectedindex].cells[1].innerText;
            alert(text);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" DataKeyNames="roleid" EmptyDataText="There are no data records to display." OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
            <Columns>
                <asp:TemplateField HeaderText="roleid" SortExpression="roleid">
                    <EditItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("roleid") %>'></asp:Label>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("roleid") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="username" SortExpression="username">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("username") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("username") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="password" SortExpression="password">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("password") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label3" runat="server" Text='<%# Bind("password") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="role" SortExpression="role">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("role") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label4" runat="server" Text='<%# Bind("role") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Action">
                    <EditItemTemplate>
                        <asp:LinkButton ID="btnupdate" runat="server" CommandName="Update" OnClientClick="return gridviewvalidation()">Update</asp:LinkButton>
                        &nbsp;
                        <asp:LinkButton ID="btncancel" runat="server" CommandName="cancel">Cancel</asp:LinkButton>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Button ID="btnedit" runat="server" CommandName="Edit" Text="Edit" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
            <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
            <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
            <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
            <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
            <SortedAscendingCellStyle BackColor="#FFF1D4" />
            <SortedAscendingHeaderStyle BackColor="#B95C30" />
            <SortedDescendingCellStyle BackColor="#F1E5CE" />
            <SortedDescendingHeaderStyle BackColor="#93451F" />
        </asp:GridView>

    </div>
    </form>
</body>
</html>

我也试过以下,但没有工作:

<script type="text/javascript">
    function gridviewvalidation() {
        debugger;
        var gridview = document.getElementById("TextBox1");
        alert(gridview.value);
    }
</script>

1 个答案:

答案 0 :(得分:0)

我不知道这对你有帮助,但你的意思是这样吗?

http://www.martenc.com/2010/12/01/customvalidator-validating-both-empty-text-and-email-address/