2014-02-11 3 views
0

У меня проблема с моими asp-повторителями.asp повторитель и привязка

У меня есть ссылка в gridview, которая открывает всплывающее окно, содержащее дополнительную информацию.

<asp:TemplateField HeaderText="Firma Info"> 
    <ItemTemplate> 

     <a href="#" onclick='openWindow("<%# Eval("CompanyID") %>");'>Vis detaljer</a> 
    </ItemTemplate> 
</asp:TemplateField> 

Вот JavaScript:

<script type="text/javascript"> 
    function openWindow(CompanyID) { 
     window.open('CompanyTest.aspx?id=' + CompanyID, 'open_window', ' width=640, height=480, left=0, top=0'); 

    } 
</script> 

Для повторителей на CompanyTest (всплывающее меню), я использовал код со следующего сайта: http://atul-dhiman.blogspot.dk/2011/06/aspnet-using-c-repeater-control.html потому что мне нужно редактирования-функциональность.

В частности, является источником для получения данных:

public void Show_Data() 
{ 
    SqlDataAdapter adp = new SqlDataAdapter("select * from Company", con); 
    DataSet ds = new DataSet(); 
    adp.Fill(ds); 
    Repeater1.DataSource = ds; 
    Repeater1.DataBind(); 
} 

Это просто возвращает все данные у меня есть, вместо того, чтобы просто возвращает данные, основанные на CompanyID во всплывающем окне-.

Я попытался заменить его

CompanyDataContext db = new CompanyDataContext(); 
int id = Convert.ToInt32(Request.QueryString["CompanyID"]); 


Repeater1.DataSource = db.Companies.Where(x => x.CompanyID == id); 
Repeater1.DataBind(); 

Но тогда мои повторители не показывает ничего.

Куда он пойдет не так?

ответ

0

Как я понимаю ваш код, на вашей странице используйте следующую ссылку с параметром запроса с именем ID:

CompanyTest.aspx?id=123 

Но в вашем коде, вы используете имя CompanyID:

int id = Convert.ToInt32(Request.QueryString["CompanyID"]); 

Так что я думаю, что изменить свой код

int id = Convert.ToInt32(Request.QueryString["id"]); 

должен помочь.


Если вы хотите, чтобы решить эту проблему, основанную на SqlDataAdapter, вы можете использовать следующий код:

public void Show_Data() 
{ 
    int id = Convert.ToInt32(Request.QueryString["id"]); 
    using (var cmd = con.CreateCommand()) 
    { 
     cmd.CommandText = "select * from Company where CompanyId = @id" 
     cmd.Parameters.AddWithValue("@id", id); 
     SqlDataAdapter adp = new SqlDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     adp.Fill(ds); 
     Repeater1.DataSource = ds; 
     Repeater1.DataBind(); 
    } 
} 
+0

Я уже пробовал. Если я это сделаю, я получаю ошибку Invalid cast exception на моей привязке данных. Когда я его отлаживаю, он говорит, что я должен убедиться, что число должно быть меньше бесконечности или этот тип источника может быть преобразован в тип назначения. – dQlle

+0

@ user3161471: можете ли вы проверить ссылку href в браузере? Является ли 'id' целым числом? Ошибка указывает, что значение, если 'Request.QueryString [" id "]' не может быть преобразовано в целое число. Также проверьте значение в отладчике, чтобы узнать, что получает страница. – Markus

+0

CompanyID - это int, который хранится в моей базе данных. Id - значение данного CompanyID - поэтому, когда я нажимаю ссылку, она получает значение. – dQlle

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