2009-11-12 2 views
0

Я пытаюсь обновить TextBox в пределах отредактированной строки внутри GridView при изменении элементов в DropDownList, и я не могу полностью его запустить в VB. Я нашел этот код в C#, но не знаю, нахожусь ли я на правильном пути?Обновление текстового поля через событие обмена в раскрывающемся списке при редактировании в gridview

Возможно, вам поможет помощь?

PS: Этот код предназначен для события OnMouseOver, но необходимо обновить TextBox в режиме редактирования.

<ItemTemplate> 
    <asp:TextBox runat="server" ID="tx1" onmouseover='<%# "ChangeValue(" +((DataGridItem)Container).FindControl("tx1").ClientID + ")"%>'></asp:TextBox> 
</ItemTemplate> 

JS код:

function ChangeValue(i) 
{ 
    var t=i.id 
    document.getElementById(t).value="Hello World!"; 
} 
+0

ответ

0

Попробуйте следующее:

Поместите следующий скрипт в голову тег:

<script language="javascript" type="text/javascript"> 

    function ChangeValue(ddl,txtid) 
    { 
     var txt=document.getElementById(txtid); 
     var dval= ddl.options[ddl.selectedIndex].value; 
     if(dval=="1") 
     { 
     txt.value="It's 1"; 
     } 
     if(dval=="2") 
     { 
     txt.value="It's 2"; 
     } 
     if(dval=="3") 
     { 
     txt.value="It's 3"; 
     } 

    } 
    </script> 

Попробуйте ниже GridView:

<asp:GridView ID="GridView1" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" 
       AutoGenerateColumns="false" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowCommand="GridView1_RowCommand" 
       runat="server" OnRowCreated="GridView1_RowCreated"> 
       <Columns> 
        <asp:CommandField ButtonType="link" ShowEditButton="true" ShowCancelButton="true" /> 
        <asp:TemplateField HeaderText="CategoryID"> 
         <ItemTemplate> 
          <asp:LinkButton ID="lnkID" runat="server" CommandName="sel" CommandArgument='<%# DataBinder.Eval(Container,"DataItem.CategoryID") %>' 
           Text='<%# DataBinder.Eval(Container,"DataItem.CategoryID") %>'></asp:LinkButton> 
         </ItemTemplate> 
         <EditItemTemplate> 
          <asp:DropDownList ID="ddl" runat="server"> 
           <asp:ListItem Text="1" Value="1" Selected="true"></asp:ListItem> 
           <asp:ListItem Text="2" Value="2"></asp:ListItem> 
           <asp:ListItem Text="3" Value="3"></asp:ListItem> 
          </asp:DropDownList> 
         </EditItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Comments"> 
         <ItemTemplate> 
          <asp:Label ID="lblID" runat="server" Text='<%# DataBinder.Eval(Container,"DataItem.CategoryID") %>'></asp:Label> 
         </ItemTemplate> 
         <EditItemTemplate> 
          <asp:TextBox ID="txtComments" runat="server"></asp:TextBox> 

         </EditItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="CategoryName"> 
         <ItemTemplate> 
          <asp:LinkButton ID="lnkName" runat="server" CommandName="sel" CommandArgument='<%# DataBinder.Eval(Container,"DataItem.CategoryName") %>' 
           Text='<%# DataBinder.Eval(Container,"DataItem.CategoryName") %>'></asp:LinkButton> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 

Ручка rowcreated события в коде:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowState == DataControlRowState.Edit) 
     { 
       DropDownList ddl = (DropDownList)e.Row.FindControl("ddl"); 
      TextBox txt = (TextBox)e.Row.FindControl("txtComments"); 
      txt.Text = "It's 1"; 
      //------------ Set onchange function for dropdown---------------------------// 
      ddl.Attributes.Add("onchange", "javascript:ChangeValue(this,'" + txt.ClientID + "');"); 
     } 
    } 

Bind сетка с ТАБЛИЦЕЙ в Northwind дб.

+0

Это хорошо. Я шел по неправильному пути, я только добрался до этой стадии. Спасибо за ваше время и понимание ... –

+0

Protected Sub DataGrid_InvoiceItems_RowEditing (ByVal отправителя Как System.Object, ByVal е Как System.Web.UI.WebControls.GridViewEditEventArgs) Ручки DataGrid_InvoiceItem.RowEditing DataGrid_InvoiceItem.EditIndex = e.NewEditIndex BindInvoiceItems() LoadInvoice() –

+0

дим ddlProduct В DropDownList = CType (DataGrid_InvoiceItem.Rows (e.NewEditIndex) .FindControl ("ddlProduct"), DropDownList) дим TextBoxUnitPrice Как TextBox = CType (DataGrid_InvoiceItem.Rows (e.NewEditIndex) .FindControl («TextBoxUnitPrice»), TextBox) Если ddlProduct IsNot Nothing AndAlso TextBoxUnitPrice IsNot Nothing п ddlProduct.Attributes.Add ("OnChange", "showValue ('" + TextBoxUnitPrice.ClientID + "');") End If End Sub –

Смежные вопросы