Usuário com melhor resposta
Completar Campos de acordo com uma opção do ComboBox

Pergunta
-
Boa tarde,
Gostaria de saber como posso autocompletar campos de um formulário assim que o usuário escolher uma opção de uma combobox...???
Tenho o seguinte cenário, WSS 3.0, estou criando uma Solução de Gerenciamento de Títulos, aproveitando alguns recurso do Sharepoint - como por exemplo o Calendário, a lista de Tarefas, e outros; possuo um formulário de Devedores e um formulário de títulos. Quando o usuário acessar o formulário de títulos ele vai encontrar uma combobox com todos os devedores carregados nesta combo, daí ele tem outros campos neste form - como por exemplo telefone, e-mail, empresa; deste devedor que esta em outra lista, mas consta neste form de títulos, de acordo com a escolha do cliente, como posso autocompletar estes campos para que assim que escolher o devedor na combobox, apareça os dados deste devedor nos campos referentes ao título que o usuário esta cadastrando. Usei o sharepoint designer para implementar um novo formulário mas não consegui...???
Aguardando resposta ansiosamente,
Emerson
Respostas
-
Crie uma webpart e use o código a seguir:
No código abaixo, uso o item Display enumerator SPControlMode, porque neste caso desejo que o formulario seja exibido semelhantemente às paginas DispForm.aspx.
Você pode usar SPControlMode.New, Edit ou Invalid conforme sua necessidade.
---
Table oTable = new Table();
protected override void CreateChildControls()
{
base.CreateChildControls();try
{
oTable.CellPadding = 0;
oTable.CellSpacing = 0;SPWeb oWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(this.Context);
SPList oList = oWeb.Lists["NOME DA SUA LISTA"];Controls.Add(oLabel);
FormToolBar toolBar = new FormToolBar();
toolBar.ControlMode = SPControlMode.Display;
toolBar.ListId = oList.ID;TableRow oRow = new TableRow();
oTable.Rows.Add(oRow);
TableCell oCellLabel = new TableCell();
oCellLabel.ColumnSpan = 2;
oRow.Cells.Add(oCellLabel);
oCellLabel.Controls.Add(toolBar);oRow = new TableRow();
oTable.Rows.Add(oRow);oCellLabel = new TableCell();
oCellLabel.ColumnSpan = 2;
oRow.Cells.Add(oCellLabel);
oCellLabel.Controls.Add(CreateEmptyImage(1, 7));foreach (SPField oField in oList.Fields)
{
if (!oField.Hidden && !oField.ReadOnlyField && oField.Type != SPFieldType.Attachments)
{
FieldLabel oLabelField = new FieldLabel();
oLabelField.ControlMode = SPControlMode.Display;
oLabelField.ListId = oList.ID;
oLabelField.FieldName = oField.InternalName;oRow = new TableRow();
oTable.Rows.Add(oRow);oRow.Style.Add("display", "none");
oCellLabel = new TableCell();
oRow.Cells.Add(oCellLabel);
TableCell oCellControl = new TableCell();
oRow.Cells.Add(oCellControl);oCellLabel.Controls.Add(oLabelField);
FormField oFormField = new FormField();
oFormField.ControlMode = SPControlMode.Display;
oFormField.ListId = oList.ID;
oFormField.FieldName = oField.InternalName;
oCellControl.Controls.Add(oFormField);oCellLabel.CssClass = "ms-formlabel";
oCellControl.CssClass = "ms-formbody";
}
}oRow = new TableRow();
oTable.Rows.Add(oRow);oCellLabel = new TableCell();
oCellLabel.ColumnSpan = 2;
oRow.Cells.Add(oCellLabel);
oCellLabel.Controls.Add(CreateEmptyImage(1, 7));List<Control> buttons = new List<Control>();
GoBackButton cancelButton = new GoBackButton();
cancelButton.ControlMode = SPControlMode.Display;
cancelButton.ListId = oList.ID;buttons.Add(cancelButton);
Table table = CreateFormButtonBar(buttons.ToArray());
TableRow oRowButton = new TableRow();
oTable.Rows.Add(oRowButton);TableCell oCellButton = new TableCell();
oRowButton.Cells.Add(oCellButton);oCellButton.ColumnSpan = 2;
oCellButton.Controls.Add(table);Controls.Add(oTable);
}
catch (Exception exc)
{
System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame(true);
Label lbl = new Label();
lbl.Text = "Ocorreu um erro na WebPart " + this.Title + ". " + stackFrame.GetMethod().ToString() + ". " + stackFrame.GetFileLineNumber() + ". " + exc.Message;
Controls.Add(lbl);
}
}private static Table CreateFormButtonBar(params Control[] controls)
{
Table table = new Table();
table.CssClass = "ms-formtoolbar";
table.CellPadding = 2;
table.CellSpacing = 2;
table.BorderWidth = 0;
table.Width = new Unit(100, UnitType.Percentage);
TableRow row = new TableRow();
TableCell cell1 = new TableCell();
cell1.Width = new Unit(99, UnitType.Percentage);
cell1.CssClass = "ms-toolbar";
cell1.Attributes.Add("nowrap", "true");
row.Cells.Add(cell1);
Image image = new Image();
image.ImageUrl = "/_layouts/images/blank.gif";
image.Width = new Unit(1);
image.Height = new Unit(18);
cell1.Controls.Add(image);
table.Rows.Add(row);foreach (Control control in controls)
{
TableCell containerCell = new TableCell();
containerCell.CssClass = "ms-toolbar";
containerCell.Attributes.Add("nowrap", "true");
row.Cells.Add(containerCell);
Table containerTable = new Table();
containerTable.CellPadding = 0;
containerTable.CellSpacing = 2;
containerTable.Width = new Unit(100, UnitType.Percentage);
TableRow row1 = new TableRow();
TableCell cell = new TableCell();
cell.HorizontalAlign = HorizontalAlign.Right;
cell.Width = new Unit(100, UnitType.Percentage);
cell.Attributes.Add("nowrap", "true");
cell.Controls.Add(control);
row1.Cells.Add(cell);
containerTable.Rows.Add(row1);
containerCell.Controls.Add(containerTable);
}return table;
}- Editado Guilherme Santos - Interface IT quinta-feira, 6 de agosto de 2009 17:15
- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 27 de junho de 2012 00:25
Todas as Respostas
-
Emerson,
nesse caso você vai ter que fugir um pouco do Sharepoint Designer e partir pro Visual Studio.
Você pode reescrever seu formulário por lá, adicionando os controles e os eventos que você desejar.
Se não souber por onde começar, me avisa, posso te ajudar. -
Boa tarde Antonio Guilherme,
Legal vocë ter respondido, já instalei o VS 2008 e o WPSBuilder, já até fiz o exemplo padrão de webpart, mas não construi nenhum formulário ou coisa parecida, como posso estar desenvolvendo isto...??? Agradeceria muito ter uma ajuda... Estou começando a desenvolver agora...
Obrigado, -
Crie uma webpart e use o código a seguir:
No código abaixo, uso o item Display enumerator SPControlMode, porque neste caso desejo que o formulario seja exibido semelhantemente às paginas DispForm.aspx.
Você pode usar SPControlMode.New, Edit ou Invalid conforme sua necessidade.
---
Table oTable = new Table();
protected override void CreateChildControls()
{
base.CreateChildControls();try
{
oTable.CellPadding = 0;
oTable.CellSpacing = 0;SPWeb oWeb = Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(this.Context);
SPList oList = oWeb.Lists["NOME DA SUA LISTA"];Controls.Add(oLabel);
FormToolBar toolBar = new FormToolBar();
toolBar.ControlMode = SPControlMode.Display;
toolBar.ListId = oList.ID;TableRow oRow = new TableRow();
oTable.Rows.Add(oRow);
TableCell oCellLabel = new TableCell();
oCellLabel.ColumnSpan = 2;
oRow.Cells.Add(oCellLabel);
oCellLabel.Controls.Add(toolBar);oRow = new TableRow();
oTable.Rows.Add(oRow);oCellLabel = new TableCell();
oCellLabel.ColumnSpan = 2;
oRow.Cells.Add(oCellLabel);
oCellLabel.Controls.Add(CreateEmptyImage(1, 7));foreach (SPField oField in oList.Fields)
{
if (!oField.Hidden && !oField.ReadOnlyField && oField.Type != SPFieldType.Attachments)
{
FieldLabel oLabelField = new FieldLabel();
oLabelField.ControlMode = SPControlMode.Display;
oLabelField.ListId = oList.ID;
oLabelField.FieldName = oField.InternalName;oRow = new TableRow();
oTable.Rows.Add(oRow);oRow.Style.Add("display", "none");
oCellLabel = new TableCell();
oRow.Cells.Add(oCellLabel);
TableCell oCellControl = new TableCell();
oRow.Cells.Add(oCellControl);oCellLabel.Controls.Add(oLabelField);
FormField oFormField = new FormField();
oFormField.ControlMode = SPControlMode.Display;
oFormField.ListId = oList.ID;
oFormField.FieldName = oField.InternalName;
oCellControl.Controls.Add(oFormField);oCellLabel.CssClass = "ms-formlabel";
oCellControl.CssClass = "ms-formbody";
}
}oRow = new TableRow();
oTable.Rows.Add(oRow);oCellLabel = new TableCell();
oCellLabel.ColumnSpan = 2;
oRow.Cells.Add(oCellLabel);
oCellLabel.Controls.Add(CreateEmptyImage(1, 7));List<Control> buttons = new List<Control>();
GoBackButton cancelButton = new GoBackButton();
cancelButton.ControlMode = SPControlMode.Display;
cancelButton.ListId = oList.ID;buttons.Add(cancelButton);
Table table = CreateFormButtonBar(buttons.ToArray());
TableRow oRowButton = new TableRow();
oTable.Rows.Add(oRowButton);TableCell oCellButton = new TableCell();
oRowButton.Cells.Add(oCellButton);oCellButton.ColumnSpan = 2;
oCellButton.Controls.Add(table);Controls.Add(oTable);
}
catch (Exception exc)
{
System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame(true);
Label lbl = new Label();
lbl.Text = "Ocorreu um erro na WebPart " + this.Title + ". " + stackFrame.GetMethod().ToString() + ". " + stackFrame.GetFileLineNumber() + ". " + exc.Message;
Controls.Add(lbl);
}
}private static Table CreateFormButtonBar(params Control[] controls)
{
Table table = new Table();
table.CssClass = "ms-formtoolbar";
table.CellPadding = 2;
table.CellSpacing = 2;
table.BorderWidth = 0;
table.Width = new Unit(100, UnitType.Percentage);
TableRow row = new TableRow();
TableCell cell1 = new TableCell();
cell1.Width = new Unit(99, UnitType.Percentage);
cell1.CssClass = "ms-toolbar";
cell1.Attributes.Add("nowrap", "true");
row.Cells.Add(cell1);
Image image = new Image();
image.ImageUrl = "/_layouts/images/blank.gif";
image.Width = new Unit(1);
image.Height = new Unit(18);
cell1.Controls.Add(image);
table.Rows.Add(row);foreach (Control control in controls)
{
TableCell containerCell = new TableCell();
containerCell.CssClass = "ms-toolbar";
containerCell.Attributes.Add("nowrap", "true");
row.Cells.Add(containerCell);
Table containerTable = new Table();
containerTable.CellPadding = 0;
containerTable.CellSpacing = 2;
containerTable.Width = new Unit(100, UnitType.Percentage);
TableRow row1 = new TableRow();
TableCell cell = new TableCell();
cell.HorizontalAlign = HorizontalAlign.Right;
cell.Width = new Unit(100, UnitType.Percentage);
cell.Attributes.Add("nowrap", "true");
cell.Controls.Add(control);
row1.Cells.Add(cell);
containerTable.Rows.Add(row1);
containerCell.Controls.Add(containerTable);
}return table;
}- Editado Guilherme Santos - Interface IT quinta-feira, 6 de agosto de 2009 17:15
- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 27 de junho de 2012 00:25