Member 13505603 Ответов: 1

Как я могу вызвать веб-форму crystal report viewer при нажатии кнопки linkbutton из datagridview?


I built an orders webform with datagridview , and built another webform with crystal report viewer control. I built also one report by using crystal report . I need from datagridview when i press linkbutton (print Result) send order number to that webform and crystal report and print out my order details in crystal report viewer. How can I program the link button in gridview to call the crystal report viewer and run the report depends on selected row and order number in datagridview :

This is the html code for webform and datagridview :

<asp:TemplateField>
<HeaderTemplate>номер заказа</HeaderTemplate>
<ItemTemplate>
&ЛТ;АСП:метка идентификатор="lblOrder" атрибут runat="сервер" текст=в'<%# Ивала("запрос количество") %&ГТ;'&ГТ;&ЛТ;/АСП:ярлык&ГТ;
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>пациент MRN#</HeaderTemplate>
<ItemTemplate>
&ЛТ;АСП:метка идентификатор="lblPatient" атрибут runat="сервер" текст=в'<%# Ивала("пациентом") %&ГТ;'&ГТ;&ЛТ;/АСП:ярлык&ГТ;
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>имя пациента</HeaderTemplate>
<ItemTemplate>
&ЛТ;АСП:метка идентификатор="lblName" атрибут runat="сервер" текст=в'<%# функцию eval("имя пациента") %&ГТ;'&ГТ;&ЛТ;/АСП:ярлык&ГТ;
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField>
<HeaderTemplate>Дата запроса</HeaderTemplate>
<ItemTemplate>
&ЛТ;АСП:метка идентификатор="lblreqdate" атрибут runat="сервер" текст=в'<%# Ивала("дата запроса") %&ГТ;'&ГТ;&ЛТ;/АСП:ярлык&ГТ;
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField>
<HeaderTemplate>REQ. Форма № </HeaderTemplate>
<ItemTemplate>
&ЛТ;АСП:метка идентификатор="обязательный" атрибут runat="сервер" текст=в'<%# Ивала("запр форма№") %&ГТ;'&ГТ;&ЛТ;/АСП:ярлык&ГТ;
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField>
&ЛТ;HeaderTemplate и gt;Параметры&ЛТ;/HeaderTemplate&ГТ;
<ItemTemplate>
&ЛТ;как ASP:LinkButton имя_команды="выберите" идентификатор="Lnkresult" атрибут runat="server"и&ГТ;напечатать результат на< и ASP:LinkButton&ГТ;
</ItemTemplate>
</asp:TemplateField>


</колонки>

<FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
<PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
<RowStyle BackColor="White" ForeColor="#330099" />
&ЛТ;SelectedRowStyle свойства backcolor="#FFCC66" шрифт-жирный="истинный" цвет="#663399" /&ГТ;
<SortedAscendingCellStyle BackColor="#FEFCEB" />
<SortedAscendingHeaderStyle BackColor="#AF0101" />
<SortedDescendingCellStyle BackColor="#F6F0C0" />
<SortedDescendingHeaderStyle BackColor="#7E0000" />

</asp:GridView>

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

This is the code to run crystal report viewer from windows form application i think i need to update this code to use it in webform :

RPT.RPT_RESULTS report = new RPT.RPT_RESULTS();
report.SetParameterValue("@ORDER_ID", txtorder.Text);
report.SetParameterValue("@deptid", deptid);
RPT.RPT_TESTS form = new RPT.RPT_TESTS();
form.crystalReportViewer1.ReportSource = report;
form.ShowDialog();


I expect when press the link button (Print Result) to send order number to another webform with crystal report viewer and print out order details on that report , but i cannot program the link button.

1 Ответов

Рейтинг:
2

alexvw

Привет,

Событие щелчка вашей кнопки linkbutton должно быть подключено:

<asp:LinkButton ID="lkBtnReport" runat="server" class="btn btn-xs" style="cursor:pointer" OnClick="lkBtnReport_Click">Show Report</asp:LinkButton>
Внутри указанного обработчика событий используйте следующую строку кода, чтобы определить строку, в которой находится кнопка linkbutton, вызвавшая событие. Таким образом, Вы сможете получить от него номер Вашего заказа и т. д.
 protected void lnkBttnDescartar_Click(object sender, EventArgs e)
{
        GridViewRow iRow = ((GridViewRow)((LinkButton)sender).NamingContainer);

        //Assuming you first column is where your "lblOrder" is.
        string OrderNum = ((Label)iRow.Cells[0].Controls[1]).Text;
        ....
}
После того как вы получили данные, которые вам нужно передать в качестве параметров для вашего отчета, и перенаправить их:
Response.Redirect("http://YourDomain/YourReportPage.aspx?g=1&i=1", false);


Я оставлю настройку кристаллического отчета на вас.

Ваше здоровье!


Member 13505603

спасибо за вашу помощь я создал следующий код onclick для linkbutton
охраняемых недействительными Lnkresult_Click(объект отправителя, EventArgs в электронной)
{
GridViewRow iRow = ((GridViewRow)((LinkButton)sender).NamingContainer);

/Исходя из того, что вы первый столбец, где ваши "lblOrder" является.
строка OrderNum = ((Label)iRow.Ячейки[0].Элементы Управления[1]).Текст;
строка Deptid = ((Label)iRow.Клетки[1].Элементы Управления[1]).Текст;

Документе документе = новая документе();
документе.Load("~/RPT/RPT_RESULTS.rpt");
документе.SetParameterValue ("@ORDER_ID", OrderNum);
документе.SetParameterValue ("@deptid", Deptid);
}
но когда я нажимаю кнопку результат печати появляется следующая ошибка
Неподдерживаемая Операция. Документ, обработанный механизмом JRC, не может быть открыт в стеке C++.
ошибка в этой строке :
документе.Load("~/RPT/RPT_RESULTS.rpt");
Могу ли я запустить отчет непосредственно из Пути или мне нужно сначала добавить его в другую веб-форму с помощью crystal report viewer и запустить эту веб-форму ?

alexvw

Привет,

Боюсь, я не смогу помочь вам с хрустальными отчетами; я не использовал их более 10 лет.

Извиняюсь.

Member 13505603

что делать, если у меня есть 3 параметра, как его добавить
строка OrderNum = ((Label)iRow.Ячейки[0].Элементы Управления[1]).Текст;
строка OrderNum = ((Label)iRow.Клетки[1].Элементы Управления[1]).Текст;
строка OrderNum = ((Label)iRow.Ячейки[2].Элементы Управления[1]).Текст;
является ли этот путь правильным ?

alexvw

Привет,

Почти; в вашем коде вы используете одну и ту же переменную снова и снова: OrderNum будет иметь последнее значение, присвоенное ей.

Это должно быть что-то вроде этого:

строка OrderNum = ((Label)iRow.Ячейки[0].Элементы Управления[1]).Текст;
строка OrderDate = ((Label)iRow.Клетки[1].Элементы Управления[1]).Текст;
и т.д...

Осторожно! если Вы читаете данные из ячейки, внутри которой нет метки или какого-либо другого элемента управления, просто прочитайте ее текстовое свойство:
строка anotherVar = iRow.Клетки[3].Текст;

Ваше здоровье!