ASP.NET网格视图中的内联单元格编辑 [英] Inline cell editing in ASP.NET grid view

查看:81
本文介绍了ASP.NET网格视图中的内联单元格编辑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨伙计们,



我必须显示看起来像excel的网格,并且应该执行内联单元格编辑我添加了几行代码来实现这一点。 />


请查看以下图片



点击这里查看图片

Hi folks,

I have to display grid which looks like excel and should perform inline cell editing i have added few lines of code to achieve this.

Please look into below image

Click Here for image

<asp:GridView ID="gvLabTATList" runat="server" AutoGenerateColumns="False" CssClass="grid-view"

                            DataKeyNames="serviceid"  OnRowDataBound="gvLabTATList_RowDataBound" OnRowCommand="gvLabTATList_RowCommand" BorderColor="#222222" BorderStyle="Solid" BorderWidth="1px"

                            Width="54%"  

                            OnRowUpdating="gvLabTATList_RowUpdating" ShowFooter="True">
                            <Columns>
                             <asp:ButtonField Text="SingleClick" CommandName="SingleClick" Visible="False"/>
                                <asp:TemplateField HeaderText="S No">
                                    <ItemTemplate>
                                        <%# Container.DataItemIndex + 1 %>
                                        <asp:HiddenField ID="hdnServiceID" runat="server" Value='<%# Eval("serviceid") %>' />
                                        <asp:HiddenField ID="hdnID" runat="server" Value='<%# Eval("TATId") %>' />
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="Service">
                                    <ItemTemplate>
                                        <asp:Label ID="txtServiceName" runat="server" Text='<%# Eval("servicename") %>'></asp:Label>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="NTDay">
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtNTDay" runat="server" Text='<%# Eval("NTDay") %>'></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="NTHour">
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtNTHour" runat="server" Text='<%# Eval("NTHour") %>'></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="UTHour">
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtUTHour" runat="server" Text='<%# Eval("UTHour") %>'></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="UTMinutes">
                                    <ItemTemplate>
                                        <asp:TextBox ID="txtUTMinutes" runat="server" Text='<%# Eval("UTMinutes") %>'></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>





它必须触发







it has to trigger


protected void gvLabTATList_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
.....}





提前致谢..



我尝试过:



< asp:GridView ID =gvLabTATListrunat =serverAutoGenerateColumns =FalseCssClass =grid-view

DataKeyNames = serviceidOnRowDataBound =gvLabTATList_RowDataBoundOnRowCommand =gvLabTATList_RowCommandBorderColor =#222222BorderStyle =SolidBorderWidth =1px

Width =54%

OnRowUpdating =gvLabTATList_RowUpdatingShowFooter =True>

< columns> < asp:ButtonField Text =SingleClickCommandName =SingleClickVisible =False/>

< asp:TemplateField HeaderText =S No>

< itemtemplate>

<%#Container.DataItemIndex + 1%>

< asp:HiddenField ID =hdnServiceIDrunat =serverValue ='<%#Eval(serviceid)%>'/>

< asp:HiddenField ID =hdnIDrunat =serverValue ='<%#Eval (TATId)%>'/>





< asp:TemplateField HeaderText =服务>

< itemtemplate>

< asp:Label ID =txtServiceNamerunat =serverText ='<%#Eval(s ervicename)%>'>





< asp:TemplateField HeaderText =NTDay>

< itemtemplate>

< asp:TextBox ID =txtNTDayrunat =serverText ='<%#Eval(NTDay)%>'> < br $>




< asp:TemplateField HeaderText =NTHour>

< itemtemplate>

< asp:TextBox ID =txtNTHourrunat =serverText ='<%#Eval(NTHour)%>'>





< asp:TemplateField HeaderText =UTHour>

< itemtemplate>

< asp:TextBox ID =txtUTHourrunat =serverText ='<%#Eval(UTHour)%>'>





< asp:TemplateField HeaderText =UTMinutes>

< itemtemplate>

< asp:TextBox ID =txtUTMinutesrunat =serverText ='<%#Eval(UTMinutes)%>'>






Thanks in advance..

What I have tried:

<asp:GridView ID="gvLabTATList" runat="server" AutoGenerateColumns="False" CssClass="grid-view"
DataKeyNames="serviceid" OnRowDataBound="gvLabTATList_RowDataBound" OnRowCommand="gvLabTATList_RowCommand" BorderColor="#222222" BorderStyle="Solid" BorderWidth="1px"
Width="54%"
OnRowUpdating="gvLabTATList_RowUpdating" ShowFooter="True">
<columns> <asp:ButtonField Text="SingleClick" CommandName="SingleClick" Visible="False"/>
<asp:TemplateField HeaderText="S No">
<itemtemplate>
<%# Container.DataItemIndex + 1 %>
<asp:HiddenField ID="hdnServiceID" runat="server" Value='<%# Eval("serviceid") %>' />
<asp:HiddenField ID="hdnID" runat="server" Value='<%# Eval("TATId") %>' />


<asp:TemplateField HeaderText="Service">
<itemtemplate>
<asp:Label ID="txtServiceName" runat="server" Text='<%# Eval("servicename") %>'>


<asp:TemplateField HeaderText="NTDay">
<itemtemplate>
<asp:TextBox ID="txtNTDay" runat="server" Text='<%# Eval("NTDay") %>'>


<asp:TemplateField HeaderText="NTHour">
<itemtemplate>
<asp:TextBox ID="txtNTHour" runat="server" Text='<%# Eval("NTHour") %>'>


<asp:TemplateField HeaderText="UTHour">
<itemtemplate>
<asp:TextBox ID="txtUTHour" runat="server" Text='<%# Eval("UTHour") %>'>


<asp:TemplateField HeaderText="UTMinutes">
<itemtemplate>
<asp:TextBox ID="txtUTMinutes" runat="server" Text='<%# Eval("UTMinutes") %>'>


推荐答案

默认情况下,GridView数据表示控件只允许您一次编辑一行。 RowUpdating事件也永远不会触发TextBox的textchanged。请记住,对文本框进行自动更新后,对每次更改进行回发都非常昂贵。也许使用AJAX是可行的,以满足这样的功能,但我认为这将需要大量的工作/时间才能使它工作。



作为替代方案,你可以实现批量编辑或创建扩展GridView的自定义控件。以下是您可能需要查看的一些参考资料:





[在GridView中动态添加和删除行并一次保存所有行]





[ GridView批量编辑]
By default, a GridView data representation control will only allow you to edit one row at a time. Also the RowUpdating event will never fire on textchanged of a TextBox. Keep in mind that doing an auto update on textbox changed is quite expensive to do postback on every change you make. Perhaps using AJAX is doable to cater such feature but I believed that would take a lot of work/time for it to make it work.

As an alternative, you could implement a bulk edit or create a custom control extending GridView. Here are some references that you may want to look at:


[Dynamically Adding and Deleting Rows in GridView and Saving All Rows at Once]


[GridView Bulk Editing]


这篇关于ASP.NET网格视图中的内联单元格编辑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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