1

通常のasp.netグリッドビューがあり、各行で編集モードを有効にし、編集ボタン(Excelグリッドなど)も使用しないようにします。グリッドの外側にある [投稿] ボタン (グリッド全体に対して 1 つのボタン) をクリックして、編集したデータをデータベースに保存したい。どうすれば到達できますか?

4

1 に答える 1

2

これを実現するには、コントロールとしてテキストボックスを含む各列に ItemTemplates を使用する必要があります..

ASP

<asp:TemplateField HeaderText="Heading Title" SortExpression="Heading Title">
                    <ItemTemplate>
                        <asp:TextBox ID="tbTextbox" runat="server" Width="65px" Text='<%# Bind("ColumnNameYouWantToView") %>'></asp:TextBox>                              
                    </ItemTemplate>
 </asp:TemplateField>

これが適切に設定されると、投稿ボタンが必要になります。グリッド内またはグリッド外に配置できます。私は両方使っていますが、こちらはグリッドの内側をフッターとして使っています。

ASP

<asp:TemplateField>
        <ItemTemplate>
             <asp:Button ID="btnView" runat="server" Text="View" OnClick="btnView_Click" Width="40px" />
        </ItemTemplate>
        <FooterTemplate>
             <asp:Button ValidationGroup="UPDATE" ID="btnUpdate" OnClick="btnUpdate_Click" runat="server" Text="Update" Width="50px"></asp:Button>
        </FooterTemplate>
        <FooterStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="50px" />
 </asp:TemplateField>

これまでのところ、ボタン クリックで foreach ステートメントを使用するのが最も効果的であることがわかりました。このアイデアの最大の欠点は、すべての行が更新されることです。動作しますが、一度に 1 つの行のみを変更すると、すべてが更新されます。ページャーを 10 に設定しているため、常に 10 行が更新されます (1 つのレコードを検索して更新する場合を除き、その 1 つのレコードのみが更新されます)。

コード ビハインド C#

protected void btnUpdate_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["databaseConnection"].ConnectionString);
            conn.Open();

            //finds the controls within the gridview and updates them
            foreach (GridViewRow gvr in gvGridViewName.Rows)
            {
                string ID = (gvr.FindControl("lblId") as Label).Text.Trim();//finds the control in the gridview
                string anotherControl = ((TextBox)gvr.FindControl("tbTextBox")).Text.Trim();//finds the textbox in the gridview

                 //Your update or insert statements


         }

これが私のやり方です。Real World Gridsを調べることもできますが、テキストボックスが空の場合は常にエラーが発生するため、これはうまくいきませんでした。ただし、これは、変更された行を更新するだけで十分「スマート」であると思われますが、この方法で行うにはあまり運がありませんでした。お役に立てれば!

于 2013-11-04T13:28:40.900 に答える