Click here to Skip to main content
15,887,596 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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>
Posted
Updated 21-Jul-17 7:55am

1 solution

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.
JavaScript
<script type="text/javascript">
        function KeyPressText(id_row, text, button)
        {
            document.getElementById(text).value = id_row;
            document.getElementById(button).click();
        }

    </script>


Below your gridview, add two elements, 1 textbox and 1 button. This component will stay hidden in your page.
ASP.NET
<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;"/>


Create the OnClick event for your hidden button and add the code where you read the index of the grid.
C#
protected void btnOcIndex_Click(object sender, EventArgs e)
{
  string indexrow = this.txtIndexRow.Text;
}


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.
C#
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 + "');";
            }
        }


Here! The complete code.

Aspx Page
ASP.NET
<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
C#
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;
        }
 
Share this answer
 
v4
Comments
Asif 7969814 22-Jul-17 2:56am    
This solution is very use full I have made a small change in java-script function and its working fine For me

function KeyPressText1(id_row, text) {

document.getElementById(text).value = id_row;
}

Thanks a lot you save my day.
Sheila Pontes 23-Jul-17 13:31pm    
I'm glad to help you.
Karthik_Mahalingam 26-Jul-17 1:00am    
5

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900