Как получить доступ к значению ASPxTextBox из JavaScript - PullRequest
5 голосов
/ 04 февраля 2010

Предположим, у меня есть DevExpress ASPxTextBox с идентификатором "tool". Я хочу получить доступ к значению текстового поля на стороне клиента. Поэтому мне нужно написать JavaScript.

Если бы это было обычное текстовое поле asp, я мог бы получить доступ к текстовому полю, написав код, подобный

var instrumentElement = document.getElementById('<%=instrument.ClientID%>')

Но тот же подход не работает для текстовое поле DevExpress.

Как я могу получить доступ к ASPxTextBox? Я использую Developer Express версии 7.2.

Вот более подробный фрагмент кода -

<div style="display: inline; float: left;">
    <dxe:ASPxTextBox ID="InstrumentQuantity" runat="server" Width="170px">
    </dxe:ASPxTextBox>
</div>

<div style="display: inline; float: left;" onclick="incOrDecQty(0);">
    <asp:ImageButton ID="decrementQuantity" runat="server" 
            Height="16px" Width="16px" ImageUrl="~/images/left.png" 
            AlternateText="Decrease Quantity" PostBackUrl="javascript:void(0);"/>
</div>

<div onclick="incOrDecQty(1);">
    <asp:ImageButton ID="incrementQuantity" runat="server" 
            AlternateText="Increase Quantity" ImageUrl="~/images/right.png" 
            Height="16px" Width="16px" PostBackUrl="javascript:void(0);" />
</div>

Это был код ASP. Соответствующий Javascript выглядит следующим образом:

function incOrDecQty()
{
    var element = document.getElementById('<%=InstrumentQuantity.ClientID%>');
    var lotSize = parseInt(document.getElementById('<%=LotSize.ClientID%>')
        .innerHTML, 10);
    var currentValue = parseInt(element.value,10);

    if(arguments[0] == 1)
        currentValue += lotSize;
    else if((currentValue - lotSize) >= 0 )
        currentValue -= lotSize;

    element.value= currentValue;            
}

Ответы [ 3 ]

7 голосов
/ 05 февраля 2010

Вы можете установить свойство ClientInstanceName в AspxTextBox.

<dxe:ASPxTextBox ID="InstrumentQuantity" 
 runat="server" Width="170px" 
 ClientInstanceName="MyTextBox"> 
</dxe:ASPxTextBox> 

ClientSide:

function DoSomething()
{
    var theText = MyTextBox.GetValue(); //GetValue() is the DevExpress clientside function

    MyTextBox.SetValue('this is the value i want to use'); //Sets the text

}

Документация devexpress содержит довольно хорошую информацию о своих клиентских скриптах. Перейдите по этой ссылке , нажмите на ссылку, затем нажмите DevExpress.Web.ASPxEditors.Scripts в меню.

2 голосов
/ 11 марта 2010

Здесь перечислены все методы и события на стороне клиента в ASPxTextBox.

http://www.devexpress.com/Help/?document=ASPxEditors/DevExpressWebASPxEditorsScriptsASPxClientTextBox_ctortopic.htm

1 голос
/ 04 февраля 2010

Возможно, что стороннее текстовое поле не использует ClientID. Вы можете попробовать UniqueID, хотя это не может быть глобально приемлемым исправлением (может работать не во всех браузерах).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...