簡體   English   中英

更新gridview行,添加舊值和新值

[英]Update gridview row add the old value and the new

我有一個Gridview ,里面有另一個嵌套的GridView 當我按下加號按鈕時,嵌套的GridView使用JavScript 嵌套的GridView使用TextBox控件在編輯模式下展開。 因此,當用戶在TextBox上鍵入內容時,便可以使用“更新”按鈕來更新單元格。 我的問題是,當我按下更新按鈕時,會發生更新,但不是我期望的那樣。 例如,如果一個單元格的初始值為“我的名字是彼得”,而我做了編輯“我沒有名字”,將要保存的新值就是這樣:“我的名字是彼得,我不知道沒有名字”。 嵌套GridView的數據綁定發生在父GridView DataBound事件上。 我的代碼:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" OnPageIndexChanging="gridView_PageIndexChanging"
    AutoGenerateColumns="False"  DataKeyNames="myitemID"
    OnRowDataBound="GridView_RowDataBound">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <img alt = "" style="cursor: pointer" src="../plus.png" />
                    <asp:GridView ID="nestedGridView"   runat="server"
                        AutoGenerateColumns="False"
                        DataKeyNames="mynestedID">
                        <Columns>
                            <asp:TemplateField HeaderText="nestedID" Visible="false"  ItemStyle-Width="20%"
                                SortExpression="nesteditemID">
                                <ItemTemplate>
                                    <asp:Label ID="nesteditemID" runat="server" Text='<%# Bind("nesteditemID") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Name"  ItemStyle-Width="20%"
                                SortExpression="Name">
                                    <ItemTemplate>
                                        <asp:TextBox ID="name" TextMode="MultiLine" Width="80%" Rows="3"  runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:Panel ID="mypanel" runat="server">
                                    <table>
                                        <tr>
                                            <td>
                                                &nbsp;
                                                <asp:ImageButton ID="ImageButton2" OnClick="updatename_Click" ImageUrl="~/images/update.jpg" Width="15px" Height="15px" runat="server"></asp:ImageButton>
                                            </td>
                                        </tr>
                                    </table>
                                    </asp:Panel>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
                </asp:Panel>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="myitemID" InsertVisible="False"
            SortExpression="myitemID" Visible="False">
            <ItemTemplate>
                <asp:Label ID="myitemID" runat="server" Text='<%# Bind("myitemID") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="ItemName"  ItemStyle-Width="20%"
            SortExpression="ItemName">
            <ItemTemplate>
                <asp:Label ID="ItemName" runat="server" Text='<%# Bind("ItemName") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

CS代碼:

protected void updatename_Click(object sender, EventArgs e)
{
    GridViewRow masterrow = (GridViewRow)(sender as Control).Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent;
    GridViewRow row = (GridViewRow)(sender as Control).Parent.Parent.Parent;
    int index = row.RowIndex;
    int mi = masterrow.RowIndex;
    int i = index;
    GridView nestedGridView = (GridView)GridView1.Rows[mi].FindControl("nestedGridView");

    Label nestedID = (Label)nestedGridView.Rows[index].FindControl("nestedID");

    int sbid = Convert.ToInt32(nestedID.Text);
    TextBox name = (TextBox)nestedGridView.Rows[index].FindControl("name");
    string myname = Convert.ToString(name.Text);

    //update name with the new value
    Nesteditem updatenesteditem = mylinqobjects.Nesteditems.Single(p => p.nesteditemID == sbid);
    if (!string.IsNullOrEmpty(myname))
    {
        updatenesteditem.nesteditemName = myname;
        mylinqobjects.SubmitChanges();
    }
}

通過刪除舊文本替換了當前文本。

string myname = name.Text.Substring(name.Text.LastIndexOf(",")+1);

嘗試了所有可能性,但是由於嵌套的網格視圖渲染及其限制,我們只能像上面那樣做。

任何其他解決方案,請提供。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM