如果在itemtemplate中有文本框时,如何在输入键按下时获取gridview rowindex [英] How to get gridview rowindex on enter key press when it have textbox in itemtemplate

查看:89
本文介绍了如果在itemtemplate中有文本框时,如何在输入键按下时获取gridview rowindex的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨朋友我正在使用asp.net 4.0我通过在项目模板中放置文本框来制作可编辑的网格视图我想知道如何在任何项目模板文本框中输入按键时获取网格视图的当前行索引。请帮帮我。



我的尝试:



Hi Friends I am using asp.net 4.0 I have made a editable grid view by putting text box in item template I want to know how to get current row index of grid view when enter key press in any Item template textbox. please help me.

What I have tried:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical" OnRowDeleting="GridView2_RowDeleting">
                            <AlternatingRowStyle BackColor="Gainsboro" />
                            <Columns>
                                <asp:CommandField ButtonType="Image" DeleteImageUrl="~/img/Cancel (2).png" ShowDeleteButton="True" />
                                <asp:TemplateField HeaderText="Source" SortExpression="Source">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:Panel ID="Panel7" runat="server" DefaultButton="BtnSourceLov">
                                            <asp:TextBox ID="txtSource" runat="server" text='<%# Eval("Source")%>' BackColor="#66CCFF" ReadOnly="True" ></asp:TextBox>
                                            <asp:Button ID="BtnSourceLov" runat="server" Text="Button" CssClass="Hide" OnClick="BtnSourceLov_Click" />
                                        </asp:Panel>
                                        
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Destination" SortExpression="Destination">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtDestination" runat="server"  text='<%# Eval("Destination")%>'></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Qty">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox3" runat="server"  ></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtQty" runat="server" Width="70px"  text='<%# Eval("Qty")%>' ></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="FreightBasis">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtFreightBasis" runat="server" Width="70px" text='<%# Eval("FreightBasis")%>'  ></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="VehicleType">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtVehicleType" runat="server" text='<%# Eval("VehicleType")%>' ></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Dist_In_Kms">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtKms" runat="server" Width="70px" text='<%# Eval("Dist_In_Kms")%>'></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Lead_Hours">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtLeadHour" runat="server" Width="70px" text='<%# Eval("Lead_Hours")%>' ></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Remarks">
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:Panel ID="Panel5" runat="server" DefaultButton="BtnAddNewRow">
                                             <asp:Button ID="BtnAddNewRow" runat="server" Text="Button" CssClass="Hide" OnClick="BtnAddNewRow_Click" />
                                            <asp:TextBox ID="txtRemark" runat="server" text='<%# Eval("Remarks")%>'></asp:TextBox>
                                        </asp:Panel>
                                              
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                            <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
                            <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
                            <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
                            <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
                            <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
                            <SortedAscendingCellStyle BackColor="#F1F1F1" />
                            <SortedAscendingHeaderStyle BackColor="#0000A9" />
                            <SortedDescendingCellStyle BackColor="#CAC9C9" />
                            <SortedDescendingHeaderStyle BackColor="#000065" />
                        </asp:GridView>

推荐答案





要解决您的问题,让我们使用带有c#的javascript:



在html代码中,在 head 标记中键入以下javascript。

当您按下文本框中的键时,此代码将触发。



javascript代码将找到一个文本框元素,保存值和在C#代码隐藏中触发一个按钮。

Hi,

To solve your problem, let's using javascript with c#:

In html code type the javascript below in your head tag.
This code will fire when you press the key in the textbox.

The javascript code will find a text box element, save the value and fire a button in the C # code-behind.
<script type="text/javascript">
        function KeyPressText(id_row, text, button)
        {
            document.getElementById(text).value = id_row;
            document.getElementById(button).click();
        }

    </script>





在gridview下面添加两个元素,1文本框和1个按钮。此组件将隐藏在您的页面中。



Below your gridview, add two elements, 1 textbox and 1 button. This component will stay hidden in your page.

<asp:TextBox ID="txtIndexRow" runat="server" style="visibility:hidden;"></asp:TextBox> 
        <asp:Button ID="btnOcIndex" runat="server" Text="FindRow" OnClick="btnOcIndex_Click" style="visibility:hidden;"/>





为您的隐藏按钮创建 OnClick 事件,并在您阅读的地方添加代码网格的索引。



Create the OnClick event for your hidden button and add the code where you read the index of the grid.

protected void btnOcIndex_Click(object sender, EventArgs e)
{
  string indexrow = this.txtIndexRow.Text;
}





在你的网格中添加 OnRowCreated 事件并添加以下代码。 />
此代码在文本框中添加属性 onkeypress ,为网格中的每一行调用javascript函数。



In your gridvew add the OnRowCreated event and add the code below.
This code add the attribute onkeypress in the textbox, calling the javascript function, for each line in the grid.

protected void grd_result_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex > -1)
            {
                ((TextBox)e.Row.FindControl("TextBox1")).Attributes["onkeypress"] = "KeyPressText('" + e.Row.RowIndex.ToString() + "', '" + txtIndexRow.ClientID + "', '" + this.btnOcIndex.ClientID + "');";
            }
        }





这里!完整的代码。



Aspx Page



Here! The complete code.

Aspx Page

<head runat="server">
    <title></title>

    <script type="text/javascript">
        function KeyPressText(id_row, text, button)
        {
            document.getElementById(text).value = id_row;
            document.getElementById(button).click();
        }

    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="grd_result" OnRowCreated="grd_result_RowCreated">
            <Columns>
                
                <asp:TemplateField HeaderText="Destination">
                    <ItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:TextBox ID="txtIndexRow" runat="server" style="visibility:hidden;"></asp:TextBox> 
        <asp:Button ID="btnOcIndex" runat="server" Text="FindRow" OnClick="btnOcIndex_Click" style="visibility:hidden;"/>
           
    </div>
    <br />
       
    </form>
</body>





代码隐藏



Code-behind

protected void grd_result_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowIndex > -1)
            {
                ((TextBox)e.Row.FindControl("TextBox1")).Attributes["onkeypress"] = "KeyPressText('" + e.Row.RowIndex.ToString() + "', '" + txtIndexRow.ClientID + "', '" + this.btnOcIndex.ClientID + "');";
            }

        }

        protected void btnOcIndex_Click(object sender, EventArgs e)
        {
            string indexrow = this.txtIndexRow.Text;
        }


这篇关于如果在itemtemplate中有文本框时,如何在输入键按下时获取gridview rowindex的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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