super_user Ответов: 1

Идентификатор доступа от клиента к серверу


Есть два календаря,один выпадающий и один вид сетки и кнопка. Теперь я пытаюсь получить доступ к этим идентификаторам на стороне сервера

Что я уже пробовал:

 <asp:DropDownList ID="regiondrop" runat="server" AutoPostBack="True" 

    onselectedindexchanged="regiondrop_SelectedIndexChanged">
    </asp:DropDownList>
 <input  ID="fromdate" value="dd/mm/yyyy" runat="server" clientidmode="static" />
  <input  ID="todate" value="dd/mm/yyyy" runat="server" clientidmode="static" />
<input type="button" id="search_data"    class="sear_btn"  value="Search Data"  />
and gridview  


теперь я пытаюсь отобразить вид сетки на странице

для этого я стараюсь вот так

<script type="text/javascript">
$(function () {

        var fromdate = $('[ID*=fromdate]').val();
        var todate = $('[ID*=todate]').val();
        var regiondrop = $('[ID*=regiondrop] option:selected')[0].value;
        var GridView1 = $('[ID*=GridView1]');
        var obj = {};
        obj.fromdate = todate ;
        obj.todate = todate ;
        obj.regiondrop = regiondrop ;
        obj.GridView1 =GridView1 ;
        Getdataa(obj);
        return false;

});
function Getdataa(obj) {
    //alert('1');
    $.ajax({
        type: "POST",
        url: "WebForm1.aspx/search_data",
        data: "{'fromdate':'" + fromdate + "','todate':'" + todate + "','regiondrop':'" + regiondrop + "','GridView1':'" + GridView1 + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        cache: false,
        success: function (result) {
            $("#GridView1").empty();
            if(data.d.length>0){
            $("#GridView1").append(
            "<tr><th>OName</th><th>RegNo</th>><th>Speed</th>");

            for(var i=0;i<data.d.length;i++){
            $("#GridView1").append("<tr><td>" +
            data.d[i].OName + "</td> <td>" +
            data.d[i].RegNo + "</td> <td>" +
            data.d[i].Speed + "</td></tr>");
               }
           }
        },
        error: function (error) {
            alert("error");

        }
    });
}


Для идентификаторов доступа я пытаюсь получить идентификатор, а затем передаю этот идентификатор в функцию webmethod, например ths
[WebMethod]
   public static string search_data(DateTime fromdate, DateTime todate, string regiondrop)
   {

       try
       {

           DateTime frmdate =
          Convert.ToDateTime(fromdate.Value.Trim().Split('T')[0]);
           DateTime tdatee =
           Convert.ToDateTime(todate.Value.Trim().Split('T')[0]);
           string regionvalue = Convert.ToString(regiondrop.SelectedValue);
           TrackDataEntities1 ts = new TrackDataEntities1();

           // here dq code is like this var dq= and here i write LINQ query
           //i don't paste because of long query
           GridView1.DataSource = dq;
           GridView1.DataBind();

       }
       catch (Exception)
       {
           GridView1.Visible = false;
           Label4.Text = ("No Data");

       }

   }


когда я пытаюсь это показать ошибки

Системная Ошибка 2'.DateTime 'не содержит определения для 'Value' и никакого метода расширения 'Value', принимающего первый аргумент типа ' System.Датавремя' может быть найден (пропущена директива using или ссылка на сборку?)

Ошибка 3 ' Система.DateTime 'не содержит определения для 'Value' и никакого метода расширения 'Value', принимающего первый аргумент типа ' System.Датавремя' может быть найден (пропущена директива using или ссылка на сборку?)

Ошибка 4 'string' не содержит определения для 'SelectedValue' и не может быть найден метод расширения 'SelectedValue', принимающий первый аргумент типа 'string' (отсутствует ли директива using или ссылка на сборку?)

Ошибка 5 Ссылка на объект требуется для нестатического поля, метода или свойства 'chart_project.WebForm1. GridView1'

Ошибка 8 ссылка на объект требуется для нестатического поля, метода или свойства 'chart_project.Файл webform1.Label4'

любое решение

1 Ответов

Рейтинг:
11

F-ES Sitecore

Вы не передаете управляющие ссылки (например, textbox, dropdownlist и т. д.), а просто простые типы, такие как DateTime и string. Таким образом, вы получаете только значения того, что находится в элементах управления, а не сами элементы управления.

DateTime frmdate =
          Convert.ToDateTime(fromdate.Value.Trim().Split('T')[0]);


Нет никакого смысла преобразовывать fromdate в datetime, так как это уже datetime, если вы хотите использовать только часть даты

DateTime frmdate = fromdate.Date;


У вас также могут возникнуть проблемы с конвертацией в вашем коде, поскольку вы ожидаете, что .net сможет конвертировать все, что вы задаете в качестве параметра fromdate, в DateTime, и это может быть невозможно из-за региональных различий. Вместо этого вы можете сделать свой параметр fromdate строкой и выполнить преобразование в DateTime в самом webmethod с помощью DateTime.Метод tryparseexact. Таким образом, вы можете более изящно обрабатывать ошибки преобразования.