Реализация доступного для редактирования DropDownList в ASP.NET

Я использую класс для этого, его разработанный для измерения времени, потраченного, чтобы выполнить функцию и записать, что к uth-16le текстовому файлу (я должен обновить это для использования нового класса, который я сделал для этого..., но nm).

Создают новый экземпляр во главе функции, например, jProfiler (L "myFunction") и очистка в конце функции сделает остальных, если Вы захотите быть уверенными, хотя новый и удаляют его сами. Это - немного излишества для маленького теста, но могло бы помочь:

// start header

/* jProfiler class by Semi Essessi
 *
 * (class description goes here)
 *
 */

#ifndef __JPROFILER_H
#define __JPROFILER_H

#include <stdio.h>
#include <windows.h>

class jProfiler
{
private:
    wchar_t*        str;
    LARGE_INTEGER   start;
    LARGE_INTEGER   tps;
    LARGE_INTEGER   buf;

    static FILE*    f;
    static int      instCount;

    static void     Initialise();
    static void     Shutdown();
public:
    jProfiler(const wchar_t* msg);
    ~jProfiler();
};

#endif

// - end header

/* jProfiler class by Semi Essessi
 *
 * (class description goes here)
 *
 */

#include "jProfiler.h"

#include <windows.h>

FILE* jProfiler::f = 0;
int jProfiler::instCount = 0;

jProfiler::jProfiler(const wchar_t* msg)
{
    // constructor code for menuVar
    int i = (int)wcslen(msg)+1;
    str = new wchar_t[i];
    memcpy(str, msg, sizeof(wchar_t)*i);
    str[i-1] =  0;

    QueryPerformanceFrequency(&tps);
    QueryPerformanceCounter(&start);

    instCount++;
    Initialise();
}

jProfiler::~jProfiler()
{
    // destructor code for menuVar
    QueryPerformanceCounter(&buf);
    // work out change in time
    double dt=((float)buf.QuadPart - (float)start.QuadPart)/(float)tps.QuadPart;
    fwprintf(f, L"%s : %.20f\r\n", str, dt);

    if(str) delete[] str;
    instCount--;
    Shutdown();
}

void jProfiler::Initialise()
{
    if(!f)
    {
        f = _wfopen(L"profilerlog.txt", L"wb");
        unsigned short a = 0xFEFF;
        fwrite(&a, sizeof(unsigned short), 1, f);
    }
}

void jProfiler::Shutdown()
{
    if(instCount==0) if(f) fclose(f);
}
6
задан Priyanga 18 October 2019 в 04:57
поделиться

1 ответ

Один элемент управления на странице

Вы можете выполнить этот простой пример для редактируемого DropDownlist в проекте кода , который использует стандартные элементы управления ASP.NET TextBox и DropDownList в сочетании с некоторым JavaScript.

Однако код не работал у меня, пока я не добавил ссылку, чтобы получить значения ClientID для TextBox и DropDownList:

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

function DisplayText()
{
    var textboxId = '<% = txtDisplay.ClientID %>';
    var comboBoxId = '<% = ddSelect.ClientID %>';
    document.getElementById(textboxId).value = document.getElementById(comboBoxId).value;
    document.getElementById(textboxId).focus();
}
</script>    

<asp:TextBox style="width:120px;position:absolute" ID="txtDisplay" runat="server"></asp:TextBox>

<asp:DropDownList ID="ddSelect" style="width:140px" runat="server">    
    <asp:ListItem Value="test1" >test1</asp:ListItem>    
    <asp:ListItem Value="test2">test2</asp:ListItem>    
</asp:DropDownList>

Наконец, в коде позади, как и в исходном примере, я добавил следующее для загрузки страницы:

protected void Page_Load(object sender, EventArgs e)
{
    ddSelect.Attributes.Add("onChange", "DisplayText();");
}


Несколько элементов управления на странице

Я поместил весь вышеуказанный код в отдельный ASCX Пользовательский контроль, чтобы сделать его многоразовым в моем проекте. Однако представленный выше код работает только в том случае, если вам требуется только один редактируемый DropDownList на данной странице.

Если вам нужно поддерживать несколько настраиваемых элементов управления DropDownList на одной странице, необходимо установить уникальное имя функции JavaScript, чтобы избежать конфликтов. Сделайте это, еще раз используя ClientID:

в файле ASCX:

function DisplayText_<% = ClientID %>(){...}

в коде позади:

/// ...
ddSelect.Attributes.Add("onChange", "DisplayText_" + ClientID + "();");
///..

Это один из способов избежать использования сторонних элементов управления.

5
ответ дан 17 December 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: