This isn't a simple task.
First, call label.UpdateNGUIText() so that NGUIText's values are set correctly using the label's values.
Next you will want to determine the length of "...". You can use NGUIText.CalculatePrintedSize for that.
Once you know that, and the length of the field (say 200 pixels), subtract the length of the dots from it, giving you the maximum allowed size. Set NGUIText.rectWidth to this value and set NGUIText.maxLines to 1.
Now use NGUIText.WrapText to "wrap" your desired text. This will use the "rectWidth" you set in the previous step, giving you the text that actually fits before the "...". Lastly, set the label's text to this wrapped value plus your 3 dots.