Модальная Форма в asp.net mvc RC с помощью jQuery

Ни один из существующих ChartFactory не использует XYSplineRenderer, и я не был уверен в ваших существующих наборах данных. Я начал с этого примера и выбрал нормальное распределение, например , это , чтобы получить оригинальный пример, показанный здесь . Возможно, вам придется настроить precision в соответствии с вашими данными. При необходимости вы можете изменить метки оси домена, используя любой из методов, предложенных в . Как я могу изменить tickLabel на NumberAxis…? .

Мой набор данных использует int String String

blockquote>

Чтение более близко, первый String - это ключ серии, который я обозначил "Frequency"; второй представляется числовым диапазоном. Этот новый пример иллюстрирует использование более высокой точности и SymbolAxis, который должен работать лучше для ваших дюжин или около того диапазонов.

Обновленный пример:

image

import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.SymbolAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYSplineRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

/**
 * @see https://stackoverflow.com/a/55418498/230513
 * @see https://stackoverflow.com/a/14790187/230513
 * @see https://stackoverflow.com/a/40167139/230513
 */
public class SplineTest {

    public static final String Title = "Spline Test";

    public static void main(String[] args) {
        EventQueue.invokeLater(new SplineTest()::display);
    }

    private void display() {
        XYSeries series = new XYSeries("Frequency");
        series.add(0, 1);
        series.add(1, 1);
        series.add(2, 3);
        series.add(3, 7);
        series.add(4, 11);
        series.add(5, 21);
        series.add(6, 28);
        series.add(7, 16);
        series.add(8, 22);
        series.add(9, 7);
        series.add(10, 1);
        series.add(11, 2);
        XYDataset dataset = new XYSeriesCollection(series);
        String[] labels = new String[series.getItemCount()];
        labels[0] = "<46";
        labels[1] = "46-55";
        labels[2] = "56-65";
        labels[3] = "66-75";
        labels[4] = "76-85";
        labels[5] = "86-95";
        labels[6] = "96-105";
        labels[7] = "106-115";
        labels[8] = "116-125";
        labels[9] = "126-135";
        labels[10] = "136-145";
        labels[11] = ">146";
        NumberAxis domain = new SymbolAxis("X", labels);
        NumberAxis range = new NumberAxis("Y");
        XYSplineRenderer r = new XYSplineRenderer(8);
        XYPlot xyplot = new XYPlot(dataset, domain, range, r);
        JFreeChart chart = new JFreeChart(xyplot);
        ChartPanel chartPanel = new ChartPanel(chart) {

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(640, 480);
            }
        };
        JFrame frame = new JFrame(Title);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(chartPanel);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

6
задан Jay Walker 7 March 2009 в 18:19
поделиться

1 ответ

Так, Вы не должны думать обо всем этом сразу. Сначала сделайте свою форму в передней стороне HTML и центре на странице, присоедините действие и заставьте это работать без Модальной причудливости.
После того как Ваша логика формы работает, можно циклично выполниться в jQuery. Хотите ли Вы запуститься с модальности, и всплывающее окно или с Асинхронного Сообщения с jQuery ваше дело. Мне обычно нравится заставлять его работать, прежде чем я сделаю это симпатичным, таким образом, мы будем следовать тем маршрутом. Если Вы используете стандарт <HTML %. BeginForm... {%> синтаксис для определения формы удалите его. Пойдите старый школьный HTML! (Я знаю, что можно далее настроить HTML. Beginform, но легче просто использовать HTML),

<form action="<%= Url.ActionLink(...)%>" id="SomeForm">

Теперь можно обеспечить электричеством jQuery в document.ready, или везде, где Вы инициализируете свой JS.

$('#SomeForm').bind('submit', youractionfunction);

В Вашей форме действия Вы будете, вероятно, называть сообщение jQuery, где обратный вызов сообщения скрывает Вашу форму и обновляет остальную часть страницы. Документация API

function youractionfunction(e){
  $.post($(e).attr('action'), // we get the action attribute (url) from the form
         { title : $('#titleBox').val()}, // the values we're passing
         yourCallbackFunction); 
  return false;  // This is important, this will stop the event from bubbling and your form from submitting twice.
}

Теперь у Вас есть форма ajaxy, таким образом, можно работать над обратным вызовом.

function yourCallbackFunction(data)
{
    // do something with the result.
}

Теперь мы можем говорить о модальности. Это обычно - что-то вроде боли, но можно использовать плагин jQuery как это или что-то подобное, чтобы сделать это для Вас. Затем это - просто вопрос обеспечения электричеством событий, чтобы показать и скрыть всплывающее окно, и Вы все установлены.

Если Ваше намерение состояло в том, чтобы иметь ту форму, загруженную асинхронно, когда на "выставочную" ссылку нажимают, это немного более неприятно, но все еще выполнимо. Можно использовать jQuery. Загрузитесь (документация API), чтобы вытянуть HTML и ввести его в dom, но необходимо будет все еще обеспечить электричеством события (снова, со связыванием ('отправьте'...) описанный выше).

12
ответ дан 9 December 2019 в 20:49
поделиться
Другие вопросы по тегам:

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