0

私には少しジレンマがあり、この問題を回避する方法がわかりません。グリッドビューを編集している場合は、そのように行を読んでいます

 cmd.Parameters.Add("@X", SqlDbType.Char).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[15].Controls[0]).Text;
 cmd.Parameters.Add("@Y", SqlDbType.Char).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[15].Controls[0]).Text;

グリッドビューが編集モードの場合、デフォルトの編集モードであるため、セルXとYの両方にテキストボックスがあります。列を手動で作成し、セルXを「読み取り専用」にします。テキストボックスなしでセルXを読み取れるようにコードを変更するにはどうすればよいですか?助けていただければ幸いです。ありがとう!

4

1 に答える 1

2

これは少し単純すぎるかもしれませんが、どうでしょうか。

    var lblHolder = (Label) GridView1.FindControl("lblMyLabel")
    cmd.Parameters.Add("@X", SqlDbType.Char).Value = lblHolder.Text

ラベル(または価値を保持しているもの)を直接検索するだけです

次に、グリッドビューは次のようになります。

                    <asp:GridView ID="gvData" runat="server"                         AutoGenerateColumns="false" Width="95%" Font-Names="Verdana">
                    <RowStyle Height="40px" />
                    <Columns>
                        <asp:TemplateField HeaderText="Col1">
                            <ItemTemplate>
                                <asp:Label ID="lblMyLabel" runat="server" 
                                     Text='<%# eval("MyDataBaseField")%>' />
                                   </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

次に、データソースをグリッドに接続する必要があります。もちろん、それを行う方法は他にもたくさんありますが、IDでコントロールを検索する方が、配列内の数を把握するよりもはるかに簡単です。

于 2012-04-16T16:30:57.553 に答える