GridViewアイテムテンプレートを使用して、テーブル内の一部のレコードを更新しようとしています。それはこのようなものだ:グリッドビューの編集中に新しい値を取得する方法は?
<asp:GridView ID="grdCursos" runat="server" CssClass="grdTable"
AutoGenerateColumns="False" DataKeyNames="CourseID">
<Columns>
<asp:TemplateField HeaderText="ID" Visible="false">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%#Bind("[CourseID]") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Nome">
<EditItemTemplate>
<asp:TextBox ID="txtCourseName" runat="server" Text='<%#Bind("[CourseName]") %>' Width="50"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblCourseName" runat="server" Text='<%#Bind("[CourseName]") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="# de Questões">
<EditItemTemplate>
<asp:TextBox ID="txtMaxQuestions" runat="server" Text='<%#Bind("[CourseMaxQuestions]") %>' Width="20"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblMaxQuestions" runat="server" Text='<%#Bind("[CourseMaxQuestions]") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Data de atribuição">
<ItemTemplate>
<asp:Label ID="lblCourseSince" runat="server"
Text='<%#Bind("[CourseSince]","{0:d}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Nome do arquivo">
<EditItemTemplate>
<asp:FileUpload ID="fileCourse" runat="server"/>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblCourse" runat="server" Text='<%#Bind("[CourseFileName]") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="200px" />
</asp:TemplateField>
<asp:CommandField ButtonType="Image" EditImageUrl="~/site/edit.jpg"
ShowEditButton="True" DeleteImageUrl="~/site/cancel.jpg"
UpdateImageUrl="~/site/accept.jpg" CancelImageUrl="~/site/cancel.jpg"
ShowDeleteButton="True" CancelText="Cancelar" DeleteText="Inativar"
EditText="Editar" UpdateText="Atualizar"></asp:CommandField>
<asp:CommandField ShowEditButton="True" />
</Columns>
とすぐに私は私のGriViewの列のいくつかは、私が編集できるテキストボックスとなっ編集リンク、をクリックして。次に、更新ボタンをクリックすると、grdCursos_RowUpdating
メソッドが呼び出されます。問題は、ユーザーが入力したの新しい値を取得できないことです。私はMsgBox
と呼んで、更新したい値を表示し、古い値だけを表示します。
これは私の方法である:
Protected Sub grdCursos_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles grdCursos.RowUpdating
Dim updatingRow As GridViewRow = grdCursos.Rows(e.RowIndex) 'Recupera a linha que está sendo editada
'Recupera os dados cadastrados
Dim ID As Label = updatingRow.FindControl("lblID")
Dim txtCourseName As TextBox = updatingRow.FindControl("txtCourseName")
Dim txtMaxQuestions As TextBox = updatingRow.FindControl("txtMaxQuestions")
Dim CourseFile As FileUpload = updatingRow.FindControl("fileCourse")
MsgBox(String.Format("ID={0}, Nome do curso={1}, # de questoes={2}, Nome do arquivo={3}", ID.Text, txtCourseName.Text, txtMaxQuestions.Text, CourseFile.FileName))
Exit Sub
....
はどうやって新しい値を得ることができますか?
K.私はまだ.NETに慣れていません。私は最初の行にe.RowIndexの代わりにこれを変更しますか?どうも –