我在自定义引导列表视图中创建了打印地址,列表视图代码如下所示。
总共有25条记录我首先选择了20条记录(选择此页面),它执行20条记录的操作,如果我只对20条记录进行所有执行操作,那么这是正确的,所以它不选择25条记录。
protected function buildMyMenuItem()
{
global $app_strings;
return <<<EOHTML
<a class="menuItem" style="width: 150px;" href="#" onmouseover='hiliteItem(this,"yes");'
onmouseout='unhiliteItem(this);'
onclick="sugarListView.get_checks();
if(sugarListView.get_checks_count() < 1) {
alert('{$app_strings['LBL_LISTVIEW_NO_SELECTED']}');
return false;
}
document.MassUpdate.action.value='print';
document.MassUpdate.submit();">Print Label</a>
EOHTML;
}
我在下面的控制器类中调用它是代码
class CustomLeadsController extends SugarController
{
public function action_print() {
if ( !empty($_REQUEST['uid']) ) {
$recordIds = explode(',',$_REQUEST['uid']);
print_r($recordIds);
?>
<form>
<div align="right">
<input name="button" type="button" onclick="window.print()" value="print" />
</div>
</form>
<table width="1024px" border="1" cellspacing="1" cellpadding="1" style="border-collapse:collapse;">
<?php
$i = 0;
foreach ($recordIds as $recordId )
{
$bean = SugarModule::get($_REQUEST['module'])->loadBean();
// print_r($bean);
$bean->retrieve($recordId);
if ($i % 4 == 0)
{
echo '<tr>';
}
?>
<td align="left" width="25%" height="100px" STYLE="font-family: 'comic sans ms', fantasy; padding:10px; font-size:12px;">
<?php echo $bean->get_summary_text(); ?>
<br>
<?php echo nl2br($bean->primary_address_street); ?>
<?php
if($bean->primary_address_city != "")
{
echo "<br>";
echo nl2br($bean->primary_address_city);
}
?>
<br>
<?php echo nl2br($bean->primary_address_state); ?>
<br>
<?php echo nl2br($bean->primary_address_postalcode); ?>
</td>
<?php
if ($i % 4 == 3)
{
echo '</tr>';
}
$i++;
}
//here is a check in case you don't have multiple of 3 rows
if ($i % 4 != 0)
{
echo '</tr>';
}
?>
</table>
<?php
}
sugar_die('');
}
}
答案 0 :(得分:2)
我前段时间遇到过类似的问题,$_REQUEST['uid']
只显示在页面上选择的项目,而不是完整的过滤列表。
检查是否已选择整个列表$_REQUEST['select_entire_list'] == 1
获取已创建已过滤列表的查询 - $_REQUEST['current_query_by_page']
然后,您可以使用“批量更新”类获取所有选定记录的列表
$mass = new MassUpdate();
$mass->setSugarBean($bean);
$mass->generateSearchWhere($module, $_REQUEST['current_query_by_page']);
$seed = BeanFactory::getBean($module);
$query = $seed->create_new_list_query('name ASC', $mass->where_clauses);
$result = $db->query($query, true);
答案 1 :(得分:0)
相反,您可以使用脚本函数从记录的所有页面获取所有选中的复选框,如下所示:
sugarListView.get_checks();
var v = document.MassUpdate.uid.value;
alert("V : "+v);
答案 2 :(得分:0)
如果您不想使用bean,可以使用PHP中的$ _SESSION全局来完成。这对于快速更改大量记录特别有用。您需要更改['Module2_Query']索引中的模块名称。
这将返回在过滤器中输入的任何搜索的完整查询。此时,您只需使用全局$ db来获取所需的值。
if($_REQUEST['select_entire_list'] == 1) {
$searchQuery = $_SESSION['Leads2_QUERY'];
}